draft-07的enum
属性定义为:
"enum": {
"type": "array",
"items": true,
"minItems": 1,
"uniqueItems": true
},
但是SPEC没有定义true
值:
“items”的值必须是有效的JSON Schema或有效的JSON Schema数组。
请将我链接到SPEC在true
代替schema
答案 0 :(得分:2)
http://json-schema.org/latest/json-schema-core.html#rfc.section.4.3.1
布尔架构值" true"和"假"无论实例值如何,都是无关紧要的断言。例如,就验证词汇表而言,布尔模式等同于以下行为:
真
- 始终通过验证,就像空架构{}
一样假
- 始终未通过验证,就像架构{" not":{}}
一样
答案 1 :(得分:0)
布尔true
值本身就是一个有效的JSON模式,因此枚举规范符合自己的规范。
作为参考,规范定义如下,明确允许根处的布尔值:
{
"$schema": "http://json-schema.org/draft-07/schema#",
...
"type": [
"object",
"boolean"
],
...
}
如果我们想验证是否允许"items": true
,我们需要先查找items
属性的规范。这正式定义如下:
"items": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": true
},
这意味着items
属性的允许值是JSON Schema(因为它引用了spec模式的根对象),或者它是JSON模式的数组)。在这种情况下,我们需要验证true
是否符合根模式#
或#/definitions/schemaArray
定义。因此,让我们首先查看指定类型为["object", "boolean"]
的根模式。由于true
是布尔值,因此我们已成功验证属性true
的值items
确实有效。