如何定义含可选元素的数组,每个元素需遵循各自独立Schema?
解决方案
你需要实现的是:数组可包含任意数量(包括0个)的元素,每个存在的元素必须匹配指定的某一个插件Schema,且元素顺序不受限制。之前的写法中,用数组形式定义items会强制要求元素按指定顺序存在,而dependentSchemas是用于对象属性的依赖校验,并不适用于数组场景。正确的实现方式是使用oneOf来定义数组元素的可选Schema:
{ "plugins": { "type": "array", "items": { "oneOf": [ { "$ref": "plugins/oidc/oidc_apigw-plugin-schema.json" }, { "$ref": "plugins/oidc/oidc_websso-plugin-schema.json" } ] }, "additionalItems": false } }
关键说明
items搭配oneOf:数组中的每个元素必须匹配oneOf列表里的任意一个Schema,既支持只包含其中一种插件、两种插件都包含,也支持空数组,完全不限制元素顺序。additionalItems: false:如果需要严格禁止数组中出现这两种插件之外的其他元素,保留该配置;若允许存在未定义类型的元素,可以删除这一行。
内容的提问来源于stack exchange,提问作者sdicola
相关产品推荐
相关产品推荐

