我已经看到了与此特定情况不完全匹配的类似问题的答案,因此如果我错过了相关答案,我们深表歉意。
我有一个要验证的异构对象数组。这些对象在顶层具有相同的格式,但子对象完全不同,只能通过每个子对象中存在的属性来识别。
尽管数组中有两个以上的对象类型,但问题映射到验证以下数据:
{
"heterogeneous_array": [{
"arbitrary_name": "foobar",
"params": {
"aa": "foo",
"ab": "bar"
}
},
{
"arbitrary_name": "barfoo",
"params": {
"ba": "baz",
"bb": "bot"
}
}
]
}
我正在使用以下模式,它声称即使“params”键下的对象无效也可以验证输入 json。如何修复 json 架构?
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"heterogeneous_array": {
"$ref": "#/definitions/heterogeneous_array"
}
},
"definitions": {
"heterogeneous_array": {
"type": "array",
"items": {
"arbitrary_name": {
"type": "string"
},
"params": {
"oneOf": [{
"$ref": "#/definitions/schema_a"
},
{
"$ref": "#/definitions/schema_b"
}
]
},
"required": ["arbitrary_name", "params"]
}
},
"schema_a": {
"properties": {
"aa": {
"type": "string"
},
"ab": {
"type": "string"
}
},
"additionalProperties": false,
"required": ["aa", "ab"]
},
"schema_b": {
"properties": {
"ba": {
"type": "string"
},
"bb": {
"type": "string"
}
},
"additionalProperties": false,
"required": ["ba", "bb"]
}
}
}
先感谢您!