我已经尝试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"
答案 0 :(得分:1)
除非您希望数据中的值是必需属性名称的一部分(使用JSON模式关键字是不可能的),否则您可以执行此关联:
{
"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"
}
}
}
}
}
]
}