我正在开发一个JSON模式来验证像这样的文档:
{
"map": [
{
"key": "mandatoryKey1",
"value": "value1"
},
{
"key": "mandatoryKey2",
"value": "value2"
},
{
"key": "otherStuff",
"value": "value3"
},
{
"key": "someMoreStuff",
"value": "value4"
}
]
}
文档需要具有包含包含键和值的元素的“映射”数组。必须有2个元素,包含strictedKey1和essentialKey2。允许任何其他键值对。元素的顺序无关紧要。我发现这很难用JSON模式表示。我可以强制架构检查像这样的强制性键(因为它很简单,所以省略了定义部分):
"map": {
"type": "array",
"minItems": 2,
"items": {
"oneOf": [
{
"$ref": "#/definitions/mandatoryElement1"
},
{
"$ref": "#/definitions/mandatoryElement2"
}
]
}
}
问题是:
我在这里看到的基本问题是数组元素以某种方式需要彼此了解,即,仅在存在强制键的情况下才允许任意键/值对。 JSON Schema似乎无法实现这种“条件验证”。有更好的方法吗?