У вас есть несколько проблем.
/ properties / Reference / properties / Status
Это недопустимая схема.Похоже, вы пытаетесь описать перечисление.
AdditionalProperties
Причина сложна, но условные шаблоны не работают с additionalProperties
.Хорошая новость в том, что это также не нужно.Вы можете просто пропустить их.
/ anyOf
Похоже, вы используете шаблон "Enum", но шаблон импликации лучше в этом случае, потому что толькоодно из перечисленных состояний имеет дополнительные ограничения.
Условно для вложенного свойства
Ваши схемы, которые определяют значение Reference.Status
, на самом деле просто указывают на Status
.Вам нужна схема, которая также описывает родительское свойство.
Следующее делает то, что я думаю, ваша схема пыталась сделать.
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"additionalProperties": false,
"properties": {
"Payload": {
"type": "object",
"additionalProperties": false,
"properties": {
"Person": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"Id": { "type": "string" },
"Name": { "type": "string" }
},
"required": ["Id", "Name"]
}
}
}
},
"Reference": {
"type": "object",
"additionalProperties": false,
"properties": {
"Status": { "enum": ["Passed", "Failed"] }
}
}
},
"anyOf": [
{
"not": {
"properties": {
"Reference": {
"properties": {
"Status": { "enum": ["Failed"] }
},
"required": ["Status"]
}
},
"required": ["Reference"]
}
},
{ "not": { "required": ["Payload"] } }
]
}