JSON 架构 - 有条件的任何一个?
JSON Schema - anyOf within conditional?
我正在尝试定义一个带有条件的 JSON 模式。我构建了一个 MVE,它已经无法正常工作。
我要验证的对象是:
{
"keiner": false,
"abdominal": true,
"zervikal": false
}
条件规则很简单。当 "keiner" 为真时,其他两个值都必须为假。如果 "keiner" 为假,则其他两个中至少有一个为真。
我写了这个架构:
{
"type": "object",
"properties": {
"keiner": { "type": "boolean" },
"abdominal": { "type": "boolean" }
},
"if": {
"properties": {
"keiner": { "const": true }
}
},
"then": {
"properties" : {
"abdominal": { "const": false },
"zervikal": {"const": false }
}
},
"else": {
"properties": {
"anyOf": [
{ "abdominal": { "const": true } },
{ "zervikal": { "const" : true } }
]
}
}
}
但是Newtonsoft在线验证器给出了错误信息
Unexpected token encountered when reading value for 'anyOf'. Expected StartObject, Boolean, got StartArray.
对于“anyOf”开始的行。这让我感到困惑,因为我能找到的所有示例都显示 anyOf 后跟一系列选项。
那我做错了什么?为什么我不能在 anyOf 之后有一个 startArray,我该如何正确编写模式?
我想这就是您要查找的架构:
我正在尝试定义一个带有条件的 JSON 模式。我构建了一个 MVE,它已经无法正常工作。
我要验证的对象是:
{
"keiner": false,
"abdominal": true,
"zervikal": false
}
条件规则很简单。当 "keiner" 为真时,其他两个值都必须为假。如果 "keiner" 为假,则其他两个中至少有一个为真。
我写了这个架构:
{
"type": "object",
"properties": {
"keiner": { "type": "boolean" },
"abdominal": { "type": "boolean" }
},
"if": {
"properties": {
"keiner": { "const": true }
}
},
"then": {
"properties" : {
"abdominal": { "const": false },
"zervikal": {"const": false }
}
},
"else": {
"properties": {
"anyOf": [
{ "abdominal": { "const": true } },
{ "zervikal": { "const" : true } }
]
}
}
}
但是Newtonsoft在线验证器给出了错误信息
Unexpected token encountered when reading value for 'anyOf'. Expected StartObject, Boolean, got StartArray.
对于“anyOf”开始的行。这让我感到困惑,因为我能找到的所有示例都显示 anyOf 后跟一系列选项。
那我做错了什么?为什么我不能在 anyOf 之后有一个 startArray,我该如何正确编写模式?
我想这就是您要查找的架构: