Использование схемы JSON If-Then-Else для изменения типа свойства - PullRequest
0 голосов
/ 08 ноября 2018

Недавно я обнаружил ключевые слова if-then-else, доступные в JSON Schema 07.

Я хотел бы использовать эти ключевые слова для изменения типа свойства в зависимости от ответа другого свойства.

По сути, я хотел бы сделать:

"if": {
                "properties" : {
                  "QuestionA": {"enum": ["CorrectAnswer"]}
                }
              },
              "then": {
                "QuestionB": //Change type of question B from null to string 
              }
}

Весь смысл в том, что когда вопрос зависит от правильности ответа на предыдущий вопрос, то на этот вопрос невозможно ответить, пока первый вопрос не будет задан правильно.

Если я сначала установлю тип второго вопроса на ноль, никакого ответа дать не удастся. После ответа на первый вопрос тип второго вопроса меняется на строковый, и на второй вопрос можно ответить.

Достижимо ли это в JSON-схеме, используя если иное еще?

1 Ответ

0 голосов
/ 08 ноября 2018

Да.

Значение ключевого слова then должно быть самой схемой JSON.

Если схема if успешно подтверждена, применяется схема then.

Когда присутствует «если», и экземпляр успешно проверяется на соответствие его подсхема, тогда оценка будет успешно против этого ключевого слова, если Экземпляр также успешно проверяется по подсхеме этого ключевого слова.

https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.6.2

...