假设我有一些如下的json数据:
{
"quantity": 3,
"modifiers": [{}]
}如果没有将对象添加到modifiers中的意图,我不希望modifiers出现。
如果没有modifiers,这应该是正确的方式
{
"quantity": 3,
}这在modifiers中应该是正确的
{
"quantity": 3,
"modifiers": [{
"testing": "some data here"
}]
}我如何构造JSON Schema来验证上面的示例是不正确的?
edit:以上示例的JSON Schema示例:
{
"type": "object",
"properties": {
"quantity": {
"type": "integer",
"minimum": 1
},
"modifiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"testing": {
"type": "string"
}
}
},
"minItems": 1
}
},
"required": [
"quantity"
]
}发布于 2018-03-29 12:29:10
(仅限草案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"}]
}发布于 2018-03-29 14:31:34
你只遗漏了一样东西。只需在/properties/modifiers/items添加"minProperties": 1即可。
{
"type": "object",
"properties": {
"quantity": {
"type": "integer",
"minimum": 1
},
"modifiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"testing": {
"type": "string"
}
},
"minProperties": 1
},
"minItems": 1
}
},
"required": [
"quantity"
]
}https://stackoverflow.com/questions/49529974
复制相似问题