JSON Schema如何定义允许a为整数/对象且禁止额外属性的规则
核心问题说明
你原来的写法存在两个错误:
- 关键字拼写错误:必填属性关键字误写为
reqired,正确拼写为required additionalProperties: false的逻辑限制:该关键字只会识别同一层级下properties字段中声明的属性,你把a的属性定义放到了anyOf的子分支中,顶层没有声明a属性,导致additionalProperties直接把合法的a也判定为额外属性拦截,这就是你删除该配置后规则才生效的原因。
正确的Schema定义
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "required": ["a"], "additionalProperties": false, "properties": { "a": { "type": ["integer", "object"] } } }
规则验证说明
上述Schema完全匹配你的需求:
- 合法场景
{"a": 1}、{"a": {}}均可正常通过校验 - 存在额外属性的
{"a": 1, "b": true}会被additionalProperties: false拦截 a类型不符合要求的{"a": true}会被类型校验拦截
内容的提问来源于stack exchange,提问作者Paul Grinberg
相关产品推荐
相关产品推荐

