我必须验证看起来像的JSON:
{
"propertyName1" : "value",
"propertyName2" : ["value1", "value2"],
"propertyName3" : { "operator1" : "value" },
"propertyName4" : { "operator2" : ["value1", "value2"] },
...
}
因此propertyName
是一个任意键,并定义了运算符。
我想我应该使用如下的架构:
{
"id" : "urn:my_arbitrary_json#",
"type" : "object",
"required" : false,
"additionalProperties" : {
"id" : "urn:my_arbitrary_key#",
"type" : "object",
"required" : true,
"properties" : {
"operator1" : { ... },
"operator2" : { ... }
}
}
}
但是,此架构缺少propertyName1
和propertyName2
个案的定义。我想定义一个数组来验证不同类型的additionalProperties
,但根据规范,这是不正确的。有没有办法验证这样的JSON?
答案 0 :(得分:1)
如果给定的数据可以有多种不同的形状,那么您可以使用oneOf
或anyOf
。例如,你可以:
{
"type" : "object",
"additionalProperties" : {
"oneOf": [
{... string ...},
{... array of strings ...},
...
]
}
}
实际上,因为这里的选项都是不同类型,所以您可以在type
中添加多个条目:
{
"type" : "object",
"additionalProperties" : {
"type": ["string", "array", "object"],
"items": {"type": "string", ...}, // constraints if it's an array
"properties": {...} // properties if it's an object
}
}