json 架构:我们可以在 "object" 中使用 "items"
json schema: Can we use "items" within an "object"
在我见过的大多数 json 架构示例中,关键字 "items" 似乎与 "array" 相关联。但是我尝试使用这个有用的工具将它与一个对象一起使用:http://www.jsonschemavalidator.net/ (JSON Schema Draft 4) 并且它有效。我找不到任何文件说明这是合法的,尽管我觉得它是正确的。
"value": {
"type": "object",
"items": ...
}
这真的合法吗?
这是您要查找的文档。
Some validation keywords only apply to one or more primitive types. When the primitive type of the instance cannot be validated by a given keyword, validation for this keyword and instance SHOULD succeed.
为了说明这个概念,以这个模式为例。
{
"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"
}
]
}
在我见过的大多数 json 架构示例中,关键字 "items" 似乎与 "array" 相关联。但是我尝试使用这个有用的工具将它与一个对象一起使用:http://www.jsonschemavalidator.net/ (JSON Schema Draft 4) 并且它有效。我找不到任何文件说明这是合法的,尽管我觉得它是正确的。
"value": {
"type": "object",
"items": ...
}
这真的合法吗?
这是您要查找的文档。
Some validation keywords only apply to one or more primitive types. When the primitive type of the instance cannot be validated by a given keyword, validation for this keyword and instance SHOULD succeed.
为了说明这个概念,以这个模式为例。
{
"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"
}
]
}