如何为嵌套JSON Schema中baseline下的version定义必填属性?
问题解答
仅将baseline设为必填不可行。
原因分析
你当前的JSON Schema中,required: ["baseline"]只是约束versions对象必须存在baseline这个属性,但baseline本身是一个嵌套对象,它的version字段并没有被设置为必填项。这就导致:即使提交的JSON里有baseline节点,只要该节点下没有version字段,依然能通过校验,完全达不到你要让baseline.version成为必填属性的需求。
正确修改方案
要实现baseline.version必填,需要在baseline的对象定义内部添加required数组,指定version为必填字段,修改后的完整Schema如下:
"versions": { "type": "object", "properties": { "pattern": { "version": { "type": "string", "description": "string" } }, "baseline": { "type": "object", "properties": { "version": { "type": "string", "description": "string" } }, "required": ["version"] // 标记baseline下的version为必填 } }, "required": ["baseline"] // 确保versions对象必须包含baseline属性 }
注:原Schema中
baseline的定义缺少type: "object",建议补上让Schema结构更严谨。
内容的提问来源于stack exchange,提问作者Bokambo
相关产品推荐
相关产品推荐

