json 根据嵌套字段的值需要架构字段
json schema field required based on value of nested field
我试过JSON Schema - specify field is required based on value of another field,但在以下情况下它对我不起作用。
实例 1
{
"part1": {
"subPartA" : {
"value": "X"
}
},
"partX": {
"propXX": "val1",
"prop2": null
}
}
实例 2
{
"part1": {
"subPartA" : {
"value": "Y"
}
},
"partY": {
"propYY": "val123",
"prop2": null
}
}
如何制作
partX.propXX
如果 part1.subPart1.value = "X"
则需要
和
partY.propYY
如果 part1.subPart1.value = "Y"
则需要
?
除非你的意思是你希望数据中的值成为必需的 属性 名称的一部分(使用 JSON-schema 关键字是不可能的),你可以做这个关联:
{
"type": "object",
"required": ["part1"],
"properties": {
"part1": {
"type": "object",
"required": ["subPartA"],
"properties": {
"subPartA": {
"type": "object",
"required": ["value"],
"properties": {
"value": {
"type": "string"
}
}
}
}
}
},
"anyOf": [
{
"required": ["partX"],
"properties": {
"part1": {
"properties": {
"subPartA": {
"properties": {
"value": {
"enum": ["X"]
}
}
}
}
},
"partX": {
"type": "object",
"required": ["propXX"],
"properties": {
"propXX": {
"type": "string"
}
}
}
}
},
{
"required": ["partY"],
"properties": {
"part1": {
"properties": {
"subPartA": {
"properties": {
"value": {
"enum": ["Y"]
}
}
}
}
},
"partY": {
"type": "object",
"required": ["propYY"],
"properties": {
"propYY": {
"type": "string"
}
}
}
}
}
]
}
我试过JSON Schema - specify field is required based on value of another field,但在以下情况下它对我不起作用。
实例 1
{
"part1": {
"subPartA" : {
"value": "X"
}
},
"partX": {
"propXX": "val1",
"prop2": null
}
}
实例 2
{
"part1": {
"subPartA" : {
"value": "Y"
}
},
"partY": {
"propYY": "val123",
"prop2": null
}
}
如何制作
partX.propXX
如果 part1.subPart1.value = "X"
则需要
和
partY.propYY
如果 part1.subPart1.value = "Y"
?
除非你的意思是你希望数据中的值成为必需的 属性 名称的一部分(使用 JSON-schema 关键字是不可能的),你可以做这个关联:
{
"type": "object",
"required": ["part1"],
"properties": {
"part1": {
"type": "object",
"required": ["subPartA"],
"properties": {
"subPartA": {
"type": "object",
"required": ["value"],
"properties": {
"value": {
"type": "string"
}
}
}
}
}
},
"anyOf": [
{
"required": ["partX"],
"properties": {
"part1": {
"properties": {
"subPartA": {
"properties": {
"value": {
"enum": ["X"]
}
}
}
}
},
"partX": {
"type": "object",
"required": ["propXX"],
"properties": {
"propXX": {
"type": "string"
}
}
}
}
},
{
"required": ["partY"],
"properties": {
"part1": {
"properties": {
"subPartA": {
"properties": {
"value": {
"enum": ["Y"]
}
}
}
}
},
"partY": {
"type": "object",
"required": ["propYY"],
"properties": {
"propYY": {
"type": "string"
}
}
}
}
}
]
}