Json Схема - условная оценка с RegEx - PullRequest
0 голосов
/ 23 марта 2020

Я видел пару примеров - наиболее заметно здесь - https://json-schema.org/understanding-json-schema/reference/conditionals.html - о реализации условных схем, основанных на значениях const или enum другого поля, но мне интересно, возможно ли это с регулярное выражение и не использование другого поля для проверки (т. е. какой страны, а затем применить шаблон к другому полю).

В моем сценарии я хочу проверить, правильно ли отформатирован почтовый индекс для канадского почтовые индексы Если это здорово, если нет, то я хочу убедиться, что в этом поле разрешено указывать только значение «NA».

  "if": {
    "properties": { "postalcode": { "pattern": "[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])?" } }
  },
  "else": {
    "properties": { "postalcode": { "pattern": "NA" } }
  }

Так что после выполнения, если у меня нет действительного канадского почтового индекса или Нет, все остальное терпит неудачу.

Спасибо

1 Ответ

2 голосов
/ 23 марта 2020

На этот раз вам не нужно условие. anyOf сделает свое дело.

"properties": {
  "postalcode": {
    "type": "string",
    "anyOf":[
      { "pattern": "[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ] ?[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])?" },
      { "const": "NA" }
    ]
  }
}
...