Выбор ответа Junior JSON и JSON Schema спрашивают часто обновлено

properties и required

Вопрос

Схема: {"type": "object", "properties": {"id": {"type": "integer"}, "email": {"type": "string"}}}. Пройдёт ли валидацию ответ {}?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Да: properties описывает поля, но обязательными их делает required. Частая ошибка в автотестах: схему пишут без required, и она пропускает пустой ответ.

Варианты ответа

  1. Да: properties описывает поля, но обязательными их делает requiredправильный ответ
  2. Нет: все поля из properties обязательны, если у них указан type
  3. Нет: пустой объект не проходит схему с "type": "object" и полями
  4. Да, но лишь при указанном $schema, иначе поля считаются обязательными

Разбор

Частая ошибка в автотестах: схему пишут без required, и она пропускает пустой ответ. Указанный type у поля проверяется, только когда поле есть. Обязательные поля перечисляют явно: "required": ["id", "email"]. $schema указывает версию стандарта и на это не влияет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.