Использование проверки схемы if / then / else с учетом значений в других объектах json - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь использовать 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" не используется для проверки.

...