在我见过的大多数 json 模式示例中,关键字“items”似乎与“array”相关联。但是我尝试使用这个有用的工具将它与对象一起使用:http: //www.jsonschemavalidator.net/(JSON Schema Draft 4)并且它可以工作。我找不到任何文件表明这是合法的,尽管我觉得它是正确的。
"value": {
"type": "object",
"items": ...
}
这真的合法吗?
在我见过的大多数 json 模式示例中,关键字“items”似乎与“array”相关联。但是我尝试使用这个有用的工具将它与对象一起使用:http: //www.jsonschemavalidator.net/(JSON Schema Draft 4)并且它可以工作。我找不到任何文件表明这是合法的,尽管我觉得它是正确的。
"value": {
"type": "object",
"items": ...
}
这真的合法吗?
这是您正在寻找的文档。
一些验证关键字仅适用于一种或多种原始类型。当实例的原始类型无法通过给定关键字验证时,此关键字和实例的验证应该成功。
为了说明这个概念,以这个模式为例。
{
"items": { "type": "string" },
"maxLength": 2,
"required": ["foo"]
}
["foo"]
验证
items
-> 通过maxLength
-> 忽略required
-> 忽略{ "foo": "bar" }
验证
items
-> 忽略maxLength
-> 忽略required
-> 通过"foo"
不验证
items
-> 忽略maxLength
-> 失败required
-> 忽略3
验证
items
-> 忽略maxLength
-> 忽略required
-> 忽略尽管可以以这种方式编写模式,但建议不要在单个模式中混合类型关键字。anyOf
相反,您可以获得更具可读性的模式。
{
"anyOf": [
{
"type": "string",
"maxLength": 2
},
{
"type": "array",
"items": { "type": "string" }
},
{
"type": "object",
"required": "foo"
}
]
}