【发布时间】:2021-02-15 09:17:10
【问题描述】:
{
"$schema":"https://json-schema.org/draft/2019-09/schema",
"$id":"PersonalDetails.json",
"type":"object",
"properties":{
"Header":{
"type":"object",
"properties":{
"HeaderName":{
"type":"string"
},
"HeaderValue":{
"type":"string"
}
}
},
"Details":{
"type":"array",
"items":{
"type":"object",
"properties":{
"FName":{
"type":"string"
},
"LName":{
"type":"string"
},
"Address":{
"type":"object",
"properties":{
"FlatNo":{
"type":"string"
},
"Sector":{
"type":"string"
},
"LandMarks":{
"type":"object",
"properties":{
"LandMark1":{
"type":"string"
},
"LandMark2":{
"type":"string"
}
}
}
},
"required":[
"Sector"
]
}
}
}
}
}
}
示例数据:
{
"Header":{
"HeaderName":"DummyName",
"HeaderValue":"DummyName"
},
"Details":[
{
"FName":"Chicago",
"LName":"Laos",
"Address":{
"FlatNo":"Excalibur",
"Sector":"07",
"LandMarks":{
"LandMark1":"USA",
"LandMark2":"UK"
}
}
}
]
}
这是我尝试过的方法
"allOf":[
{
"if":"properties":{
"FlatNo":{
"const":"07"
},
"LandMarks":{
"properties":{
"LandMark1":{
"const":"USA"
}
},
"then":"LandMarks":{
"required":[
"LandMark2"
]
}
}
]
所以要求是在 JSON Schema 中插入 IF then 条件,条件如下
如果 LandMark1 = USA 且 FlatNo = Excalibur,则需要 LandMark2 我无法弄清楚我应该将这个条件及其语法放在哪里
我在父级尝试了 LandMarks 的 if-then 条件,但不知何故,即使这样也不起作用。
任何帮助都是非常值得赞赏的
【问题讨论】:
-
您能否向我们展示您尝试过但没有成功的方法?作为一个单独的模式是好的和可取的。应该可以帮你到这里没问题。除非我能确切地看到你尝试了什么,否则无法判断你做错了什么=]
-
我尝试将 if-then 条件放在上述架构中地址级别的 allOf 标记中,但即使这种方法也不起作用
-
我明白,但我还是想看看这是什么样子。请您编辑您的问题以包含此内容吗? =]
-
您好 Relequestual,我已经编辑了问题,您可以看到我尝试过的方法
-
谢谢。那里的 JSON 不太合适。看起来您的
if和then不是同一个对象的一部分。你想整理一下吗?
标签: json jsonschema