我在嵌套对象中定义了一个子模式,并且无法使枚举约束起作用。看到这里....
{
"$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"
}
我在做什么错?它必须是嵌套对象的基础知识。我知道是否更改了值名称,在第一个示例中它会在验证过程中检测到它丢失并被拒绝...为什么它不检测到无效的枚举字符串?
任何帮助将不胜感激!
答案 0 :(得分:2)
由于某种原因,这真的很难发现。我以为我也疯了。您那里还有一个:
。
"enum:": [
^