【发布时间】:2016-12-12 19:00:23
【问题描述】:
我正在尝试验证一个可以具有任意键的对象,其值是一个看起来像这样的对象:
{ "href": "some string" }
或包含与上述匹配的对象的数组。
这是我目前拥有但不工作的:
{
"$schema": "http://json-schema.org/schema#",
"id": "https://turnstyle.io/schema/links.json",
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "object",
"required": "href"
},
{
"type": "array",
"items": {
"type": "object",
"required": "href"
}
}
]
}
}
Passing example:
{
"customer": { "href": "/customer/1" },
"products": [
{ "href": "/product/1" },
{ "href": "/product/2" }
]
}
Failing example:
{
"customer": { "wrongKey": "/customer/1" },
"products": "aString"
}
有没有可能,如果有,正确的语法是什么?
我的假设是这不起作用,因为additionalProperties 的oneOf|anyOf|allOf 中的传递模式必须适用于additionalProperties 下的所有键。
【问题讨论】:
-
“我的假设是这不起作用,因为在附加属性的 oneOf|anyOf|allOf 中传递的模式必须适用于属于附加属性的所有键。”不,根据 oneOf 内部的不同模式,不同的键可以是有效的。在这种情况下,anyOf 也更有效。
标签: json validation jsonschema