说我有一些像这样的json数据:
{
"quantity": 3,
"modifiers": [{}]
}
如果没有将对象添加到modifiers
的意图,我不希望modifiers
存在。
如果没有modifiers
:
{
"quantity": 3,
}
这应该与modifiers
:
{
"quantity": 3,
"modifiers": [{
"testing": "some data here"
}]
}
如何构建JSON模式以验证上述最不正确的示例?
编辑: 上述示例的JSON模式示例:
{
"type": "object",
"properties": {
"quantity": {
"type": "integer",
"minimum": 1
},
"modifiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"testing": {
"type": "string"
}
}
},
"minItems": 1
}
},
"required": [
"quantity"
]
}
答案 0 :(得分:1)
你只缺少一件事。只需在"minProperties": 1
添加/properties/modifiers/items
。
{
"type": "object",
"properties": {
"quantity": {
"type": "integer",
"minimum": 1
},
"modifiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"testing": {
"type": "string"
}
},
"minProperties": 1
},
"minItems": 1
}
},
"required": [
"quantity"
]
}
答案 1 :(得分:0)
(仅限草案7)要不允许数组为空(如果存在),请执行以下操作:
"if": {
"required": [
"modifiers"
]
},
"then": {
"properties": {
"modifiers": {
"minItems": 1
}
}
}
这将确保这是无效的:
{
"quantity" : 1,
"modifiers":[]
}
但是请注意以下json是有效的:
{
"quantity" : 1,
"modifiers":[{}]
}
如果您不想要,请确保包含相应的required
字段。这将是基于上面给定的示例/模式的最终模式的样子:
{
"type": "object",
"properties": {
"quantity": {
"type": "integer",
"minimum": 1
},
"modifiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"testing": {
"type": "string"
}
},
"required": [
"testing"
]
},
"minItems": 1
}
},
"required": [
"quantity"
],
"if": {
"required": [
"modifiers"
]
},
"then": {
"properties": {
"modifiers": {
"minItems": 1
}
}
}
}
现在,这也是无效的:
{
"quantity" : 1,
"modifiers":[{}]
}
这是有效的:
{
"quantity" : 1,
"modifiers":[{"testing":"343"}]
}