父/子层次结构&;jsonschema
我试图提出一个json模式来验证此类文档:父/子层次结构&;jsonschema,json,schema,parent-child,hierarchy,jsonschema,Json,Schema,Parent Child,Hierarchy,Jsonschema,我试图提出一个json模式来验证此类文档: { "rootData": { "parent1": [ { "parent1": [ { "leaf1": { "attr": "value" } } ] }, { "parent2": [ {
{
"rootData": {
"parent1": [
{
"parent1": [
{
"leaf1": {
"attr": "value"
}
}
]
},
{
"parent2": [
{
"leaf1": {
"attr": "value"
}
}
]
},
{
"leaf1": {
"attr": "value"
}
}
]
},
"rootInfo": {
"i1": 1
}
}
一些信息:
“必需”:[“parent1”]
和“必需”:[“parent2”]
约束添加到您的parent1和parent2定义中,并使用其中一个定义:
{
"$schema": "http://json-schema.org/draft-06/schema#",
"definitions": {
"parent1": {
"$id": "#parent1",
"type": "object",
"required": ["parent1"],
"properties": {
"parent1": {"$ref": "#node"}
}
},
// ...
},
"type": "object",
"properties": {
"rootData": {
"oneOf": [
{"$ref": "#parent1"},
{"$ref": "#parent2"}
]
}
}
}
如果您尝试使用anyOf
并成功,那是因为您的parent1
和parent2
定义相互验证:parent1
针对parent2
对象进行验证,因为它忽略了“parent2”属性,并且在没有“parent1”属性的情况下有效;对于“parent1”,反之亦然。添加“必需”:[“parent1”]
和“必需”:[“parent2”]
约束到您的parent1和parent2定义中,并使用其中一个:
{
"$schema": "http://json-schema.org/draft-06/schema#",
"definitions": {
"parent1": {
"$id": "#parent1",
"type": "object",
"required": ["parent1"],
"properties": {
"parent1": {"$ref": "#node"}
}
},
// ...
},
"type": "object",
"properties": {
"rootData": {
"oneOf": [
{"$ref": "#parent1"},
{"$ref": "#parent2"}
]
}
}
}
如果您尝试使用anyOf
并成功,那是因为您的parent1
和parent2
定义相互验证:parent1
针对parent2
对象进行验证,因为它忽略了“parent2”属性,并且在没有“parent1”属性的情况下有效;“parent1”也是如此。谢谢您的帮助!但是更新后的映射仍然失败。返回“refVal1未定义”@user12824955我不确定这个错误是什么意思,但听起来像是另一个问题。当你在你的程序中实际尝试它时会发生什么?谢谢你的帮助!但是更新后的映射仍然失败。返回“refVal1未定义”@user12824955我不确定这个错误是什么意思,但听起来像是另一个问题。当你在你的程序中实际尝试它时会发生什么?