JSON 架构枚举不影响验证
JSON Schema enum does not affect validation
我在嵌套对象中定义了一个子模式,但无法使枚举约束起作用。看这里....
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"Top level": {
"type": "object",
"properties": {
"State": {
"type": "object",
"description": "stuff",
"properties": {
"Value": {
"type": "string",
"enum:": [
"A",
"B",
"C"
]
},
"readOnly": true
},
"required": [
"Value"
]
}
},
"required": [
"State"
]
}
},
"required": [
"Top level"
]
}
这应该会失败,但它会验证。下面...
{
"Top level": {
"State": {
"Value": "not supposed to validate but does anyway"
}
}
}
奇怪的是,这个模式似乎可以工作并阻止不需要的字符串,但它没有更深层次的子模式结构...
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"Value": {
"type": "string",
"enum": [
"A",
"B",
"C"
]
}
}
}
这个例子被拒绝了...
{
"Value": "D"
}
我做错了什么?它一定是关于嵌套的一些基本知识 objects.I 知道如果我更改值名称,它会检测到它丢失并在第一个示例的验证期间拒绝...为什么它不检测无效的枚举字符串?
如有任何帮助,我们将不胜感激!
由于某种原因,这真的很难发现。我以为我也疯了。你那里有一个额外的 :
。
"enum:": [
^
我在嵌套对象中定义了一个子模式,但无法使枚举约束起作用。看这里....
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"Top level": {
"type": "object",
"properties": {
"State": {
"type": "object",
"description": "stuff",
"properties": {
"Value": {
"type": "string",
"enum:": [
"A",
"B",
"C"
]
},
"readOnly": true
},
"required": [
"Value"
]
}
},
"required": [
"State"
]
}
},
"required": [
"Top level"
]
}
这应该会失败,但它会验证。下面...
{
"Top level": {
"State": {
"Value": "not supposed to validate but does anyway"
}
}
}
奇怪的是,这个模式似乎可以工作并阻止不需要的字符串,但它没有更深层次的子模式结构...
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"Value": {
"type": "string",
"enum": [
"A",
"B",
"C"
]
}
}
}
这个例子被拒绝了...
{
"Value": "D"
}
我做错了什么?它一定是关于嵌套的一些基本知识 objects.I 知道如果我更改值名称,它会检测到它丢失并在第一个示例的验证期间拒绝...为什么它不检测无效的枚举字符串?
如有任何帮助,我们将不胜感激!
由于某种原因,这真的很难发现。我以为我也疯了。你那里有一个额外的 :
。
"enum:": [
^