JSON Schema子条件实现咨询:charges含amount时minimum需必填
实现指定的JSON校验逻辑
可以通过JSON Schema实现你描述的校验规则,以下是具体的Schema定义及说明:
完整校验Schema
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "minimum": { "type": "number" }, "charges": { "type": "array", "items": { "type": "object", "properties": { "amount": { "type": "number" }, "billable": { "type": "number" } }, "additionalProperties": false } } }, "required": ["charges"], "if": { "properties": { "charges": { "contains": { "required": ["amount"] } } } }, "then": { "required": ["minimum"] }, "additionalProperties": false }
规则对应说明
- 根节点
minimum初始为可选:Schema中minimum未被加入全局required数组,默认可选。 charges数组内对象的amount和billable均为可选:数组元素的properties定义了这两个字段,但未加入元素自身的required数组。- 若
charges中任意对象存在amount,则minimum必填:通过if/then条件实现,if部分用contains关键字检测数组中是否存在包含amount的对象,满足条件时then强制要求根节点包含minimum。
示例验证
- 你提供的无效示例:由于
charges中存在带amount的对象,但根节点缺少minimum,会被Schema校验拒绝。 - 你提供的有效示例:
charges中无任何对象包含amount,minimum可选(此处未提供也符合规则),会通过校验。
内容的提问来源于stack exchange,提问作者shaselton
相关产品推荐
相关产品推荐

