Подтвердить что ты не робот

В чем разница между "обязательным" и "необязательным" в схеме JSON

Иногда я замечал следующие схемы JSON:

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "required": true
            }
     }

}

против

{
    "type": "object",   
    "properties": {
        "address": {
                   "type": "string",
                   "optional": false
            }
     }

}

В чем разница между required vs optional в приведенном выше примере?

4b9b3361

Ответ 1

Это означает, что объект должен иметь значение undefined для свойства address (если required).

Ответ 2

Проект IETF v4 схемы JSON определяет только required и не включает optional.

Чтобы процитировать раздел в required из проекта v4:

Допустимые значения: Значение этого ключевого слова ДОЛЖНО быть массивом. Этот массив ДОЛЖЕН иметь по крайней мере, один элемент. Элементы этого массива ДОЛЖНЫ быть строками, и ДОЛЖНЫ быть уникальный.

Условия для успешной проверки: Экземпляр объекта действителен против этого ключевое слово, если его набор свойств содержит все элементы в этом ключевом массиве стоимость.

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

Ответ 3

Собственно, это эквивалентные выражения, но с использованием разных версий стандарта.

optional от v2, required от v3. Вы должны убедиться, что используете правильный инструмент (хотя в идеале вы должны перейти на v4, если сможете).