条件语句不适用于 Json 模式
Conditional statements do not apply in Json Schema
我想根据以下Json中的值A字段的值更改值B字段可接受的值。
{"maximumList": [
{
"ValueA": 232,
"ValueB": ["aa"]
}]}
为此,我使用 Json Schema Generator 获得了 Schema 并将其修改为如下所示。
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"maximumList": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"ValueA": {
"type": "integer"
},
"ValueB": {
"type": "array",
"items": [
{
"type": "string"
}
]
}
},
"required": [
"ValueA",
"ValueB"
],
"if":{
"properties":{
"ValueA" :{"const":232}
}
},
"then":{
"ValueB":{
"enum":["bbb"]
}
}
}
]
}
},
"required": [
"maximumList"
]
}
肯定设置ValueB字段的值只允许"bbb",但是即使在ValueB字段的值中输入"aaa",也通过验证。
有什么我遗漏的吗?
我认为您的问题是您使用的是 JSON 架构的草稿 4(由 http://json-schema.org/draft-04/schema#
的 $schema
关键字值标识。
if
/then
/else
关键字仅在草案 7 及更高版本中受支持。如果您将 $schema
值更改为 http://json-schema.org/draft-07/schema#
,它应该适合您。
我想根据以下Json中的值A字段的值更改值B字段可接受的值。
{"maximumList": [
{
"ValueA": 232,
"ValueB": ["aa"]
}]}
为此,我使用 Json Schema Generator 获得了 Schema 并将其修改为如下所示。
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"maximumList": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"ValueA": {
"type": "integer"
},
"ValueB": {
"type": "array",
"items": [
{
"type": "string"
}
]
}
},
"required": [
"ValueA",
"ValueB"
],
"if":{
"properties":{
"ValueA" :{"const":232}
}
},
"then":{
"ValueB":{
"enum":["bbb"]
}
}
}
]
}
},
"required": [
"maximumList"
]
}
肯定设置ValueB字段的值只允许"bbb",但是即使在ValueB字段的值中输入"aaa",也通过验证。
有什么我遗漏的吗?
我认为您的问题是您使用的是 JSON 架构的草稿 4(由 http://json-schema.org/draft-04/schema#
的 $schema
关键字值标识。
if
/then
/else
关键字仅在草案 7 及更高版本中受支持。如果您将 $schema
值更改为 http://json-schema.org/draft-07/schema#
,它应该适合您。