Ответ 1
Это означает, что объект должен иметь значение undefined
для свойства address
(если required
).
Иногда я замечал следующие схемы JSON:
{
"type": "object",
"properties": {
"address": {
"type": "string",
"required": true
}
}
}
против
{
"type": "object",
"properties": {
"address": {
"type": "string",
"optional": false
}
}
}
В чем разница между required
vs optional
в приведенном выше примере?
Это означает, что объект должен иметь значение undefined
для свойства address
(если required
).
Проект IETF v4 схемы JSON
определяет только required
и не включает optional
.
Чтобы процитировать раздел в required
из проекта v4:
Допустимые значения: Значение этого ключевого слова ДОЛЖНО быть массивом. Этот массив ДОЛЖЕН иметь по крайней мере, один элемент. Элементы этого массива ДОЛЖНЫ быть строками, и ДОЛЖНЫ быть уникальный.
Условия для успешной проверки: Экземпляр объекта действителен против этого ключевое слово, если его набор свойств содержит все элементы в этом ключевом массиве стоимость.
По сути, использование required
делает необязательными все свойства, для которых
имя не включено в данный массив строк.
Собственно, это эквивалентные выражения, но с использованием разных версий стандарта.
optional
от v2, required
от v3. Вы должны убедиться, что используете правильный инструмент (хотя в идеале вы должны перейти на v4, если сможете).