您好我有以下情况:
JSON对象:
{
"$id": "1",
"someProp": "123",
"children": [{
"$id": "2",
"$type": "ClassB",
"Parent": {
"$ref": "1"
}
}]
}
JSON架构:
{
"id": "ClassA",
"required": true,
"type": [
"object",
"null"
],
"properties": {
"someProp": {
"required": true,
"type": [
"string",
"null"
]
},
"children": {
"id": "List<Child>",
"required": true,
"type": [
"array",
"null"
],
"items": {
"id": "Child",
"type": [
"object",
"null"
],
"properties": {
"id": {
"required": true,
"type": "integer"
},
"parent": {
"$ref": "ClassA"
}
}
}
}
}
}
我有一个具有引用循环的复杂对象,因此我在配置对象时配置了json.net以进行引用。一切都按预期工作我可以序列化和反序列化对象,但是当我使用上述模式验证JSON对象时,我收到以下错误:
对象中缺少必需的属性:&#34; someProp&#34;,path: object.Children [0] .parent
这是正确的,如何让架构看到引用JSON对象?
答案 0 :(得分:0)
问题在于子数组
中对象的“id”属性"properties": {
"id": {
"required": true,
"type": "integer"
},
"parent": {
"$ref": "ClassA"
}
}
你说id要求拥有属性“id”而你在对象中没有该属性,要么将“id”更改为“$ id”,要么将其从属性列表中删除以满足模式。
"properties": {
"$id": {
"required": true,
"type": "integer"
},
"parent": {
"$ref": "ClassA"
}
}
还要确保你有“id”/“$ id”整数值,即
"$id":2
不是"$id":"2"