如何在JSON Schema中使用任意属性名并实现指定结构校验
任意键名、值为非空字符串数组的JSON Schema写法
这类动态键名结构不需要提前枚举属性名,通过JSON Schema的内置约束字段即可完成全部规则校验,完整Schema如下:
{ "type": "object", "minProperties": 1, "additionalProperties": { "type": "array", "items": { "type": "string" }, "minItems": 1 } }
各字段和需求的对应关系:
minProperties: 1:约束对象必须至少包含1个属性,禁止传入空对象additionalProperties:用于定义所有未显式声明的属性的校验规则,天然支持任意字符串作为属性名,不需要提前固定键名additionalProperties.type: "array"+additionalProperties.items.type: "string":约束每个属性的取值必须是字符串类型组成的数组additionalProperties.minItems: 1:约束每个字符串数组至少包含1个元素,禁止空数组
你给出的示例结构可以完全通过该Schema校验,以下几种不符合规则的情况会被拦截:
- 传入空对象
{} - 某属性值不是数组,比如
{"K1": "V1"} - 某属性值是空数组,比如
{"K1": []} - 数组中包含非字符串元素,比如
{"K1": ["V1", 2]}
内容的提问来源于stack exchange,提问作者Mason Wheeler
相关产品推荐
相关产品推荐

