【发布时间】:2021-12-12 08:49:19
【问题描述】:
对不起,如果之前已经发布过!我找不到适合我的用例并且有效的答案:(
我有以下 JSON (JSON 1),我正在为它编写一个 JSON 模式 (见最后)。大多数情况下,除了我们在其中包含 prop5 和对象的地方之外,一切都有效。
JSON 1
"prop1": "somestuff",
"prop2": "morestuff",
"temp_list": [
"stuff",
"otherstuff",
"final stuff"
],
"prop4": "morestuff",
"prop5": {
"sub_prop_1": {
"more_properties": "temp",
"and_even_more": "temp"
}
},
"prop6": "finallyDone"
}
我想创建一个选项,让我可以拥有三个“子道具”中的一个或多个,例如 JSON 2。
JSON 2
{
"prop1": "somestuff",
"prop2": "morestuff",
"temp_list": [
"stuff",
"otherstuff",
"final stuff"
],
"prop4": "morestuff",
"prop5": {
"sub_prop_1": {
"more_properties": "temp",
"and_even_more": "temp"
},
"sub_prop_2": {
"randomProp": "stuff",
"anotherOne": "moreStuff"
},
"sub_prop_3": {
"last_random_prop": "somestuff"
}
},
"prop6": "finallyDone"
}
两个 JSON 都应该是有效的。
但是,我认为我没有正确编写架构。当前行为接受可能在“prop 5”下列出的任何属性,无论在“sub props”中输入的值的名称和类型如何。
预期的行为是我拥有三个“sub_props”中的一个或多个,以及每个可能具有的任何其他字符串属性。
这是我目前拥有的架构,如何修复我的架构以拥有三个“sub_props”中的一个或多个?我相信我应该使用anyOf,但我还不能正确使用它。
JSON 架构
{
"type": "object",
"properties": {
"prop1": {
"type": "string"
},
"prop2": {
"type": "string"
},
"temp_list": {
"type": "array",
"items": [
{
"type": "string"
},
{
"type": "string"
},
{
"type": "string"
}
]
},
"prop4": {
"type": "string"
},
"prop5": {
"type": "object",
"anyOf":[
{
"properties": {
"sub_prop_1": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"sub_prop_2": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"sub_prop_3": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}}
]
},
"prop6": {
"type": "string"
}
},
"required": [
"prop1",
"prop2",
"temp_list",
"prop4",
"prop5",
"prop6"
]
}
感谢您的帮助! :)
【问题讨论】:
标签: json jsonschema