Я пытаюсь использовать if / then / else, чтобы использовать три разные схемы для объекта, но основанные на значении поля JSON за пределами этого объекта. Я видел только пример людей, делающих свои условные выражения на основе полей одного и того же объекта.
Вот что я пробовал:
schema: {
'MyOtherObject': {
'$id': '#/properties/MyOtherObject',
'type': 'object',
'additionalProperties': false,
'title': 'The MyOtherObject Schema',
'required': [
'PaymentMethod'
],
'properties': {
'PaymentMethod': {
'$id': '#/properties/Deal/properties/PaymentMethod',
'type': 'string',
'title': 'The PaymentMethod Schema',
'default': '',
'examples': [
'Cash'
],
'pattern': '^(.*)$'
},
...
},
'MyConditionalSchemaObject': {
'$id': '#/properties/MyConditionalSchemaObject',
'type': 'object',
'additionalProperties': false,
'title': 'The MyConditionalSchemaObject Schema',
'if': {
// Trying to get at the value above but don't know how... my schema validations still failing
'2/MyOtherObject/properties/PaymentMethod' : { 'const': 'Cash' }
},
'then': {
'required': [
'PaymentStartDate'
],
'properties': {
'BankName': {
'$id': '#/properties/Financing/properties/BankName',
'type': ['string', 'null'],
'title': 'The Bankname Schema',
'default': '',
'examples': [
'Capital One Auto Finance'
],
...
}
}
Я ожидал бы, что этот код проверит значение поля PaymentMethod
в MyOtherObject
объекте json, а затем использует схему, основанную на прохождении условной проверки (если она равна Cash
), но я все еще получаю ошибки проверки схемы, говоря, Should not be additional properties 'BankName'
, подразумевая, что схема в блоке "then" не используется для проверки.