【发布时间】:2020-03-13 09:52:44
【问题描述】:
我有下面显示的 json。我想让它对一个必须有 zoo_unique_code 的动物园列表起作用。但可以有动物或鸟类,或两者兼有,或都没有。但是我想用子模式验证它是否有动物或鸟类,例如鸟/动物 ID。似乎子模式不起作用。
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"animal_id": {
"type": "string",
"maxLength": 24
},
"bird_id": {
"type": "string",
"maxLength": 50
},
"zoo_bird_and_animal": {
"type": "object",
"anyOf": [{
"properties": {
"zoo_bird": {
"type": "object",
"required": [
"zoo_bird_id"
],
"properties": {
"zoo_bird_id": {
"$ref": "#/definitions/bird_id"
}
}
}
}
}, {
"properties": {
"zoo_animal": {
"type": "object",
"required": [
"zoo_animal_id"
],
"properties": {
"zoo_animal_id": {
"$ref": "#/definitions/animal_id"
}
}
}
}
}
]
}
},
"properties": {
"zoo_list": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"zoo_unique_code"
],
"minProperties": 1,
"properties": {
"zoo_unique_code": {
"type": "string",
"enum": [
"NEWYORKZOO",
"PARISZOO"
]
}
},
"$ref": "#/definitions/zoo_bird_and_animal"
}
}
}
}
并用
测试它{
"zoo_list": [
{
"zoo_unique_code": "NEWYORKCODE",
"zoo_bird": {
"zoo_bird_id": "newid"
}
}
]
}
任何建议将不胜感激。
【问题讨论】:
-
能否请您也添加一个数据示例?很棒的是来自jsonschema.dev 的共享链接,也请描述子模式中不起作用的内容
-
能否提供您期望有效和无效的实例数据?
-
(请注意jsonschema.dev目前只支持draft-07)
-
编辑了描述。你能再看看吗?
-
在
anyOf中有一个"$ref": "#/definitions/zoo_animal_id"似乎不存在,也许你想在这里使用#/definitions/animal_id
标签: json validation jsonschema json-schema-validator