JSON Schema — це спосіб описати, якою має бути структура JSON-документа, за допомогою іншого JSON-документа. Замість того, щоб перевіряти дані вручну умовами в коді, можна декларативно описати очікувані типи, обов’язкові поля та обмеження значень, а потім перевіряти дані автоматично.
Основні ключові слова draft-07
type— очікуваний тип значення (object, string, number, array тощо).required— список полів об’єкта, які обов’язково мають бути присутні.properties— опис схеми для кожного поля об’єкта окремо.enum— обмеження значення конкретним переліком варіантів.minimum/maximum,minLength/maxLength— числові й рядкові обмеження.
Чим це відрізняється від валідації синтаксису
Звичайна валідація JSON перевіряє лише, що текст синтаксично коректний — правильні дужки, лапки, коми. JSON Schema перевіряє значно більше: чи є в об’єкті обов’язкове поле email, чи є значення age числом, а не рядком, чи входить status у дозволений перелік значень.
Навіщо це потрібно
- Перевірити, що відповідь стороннього API відповідає задокументованому контракту.
- Валідувати конфігураційні файли перед деплоєм, щоб зловити помилку раніше.
- Задокументувати очікувану структуру даних у форматі, який одразу можна автоматично перевірити.
additionalProperties: чи можна додавати зайві поля
За замовчуванням JSON Schema дозволяє в об’єкті будь-які поля понад ті, що описані в properties — required і properties лише встановлюють мінімум, а не вичерпний перелік. Якщо потрібно заборонити невідомі поля (наприклад, щоб зловити одруку в назві ключа), треба явно додати "additionalProperties": false — без цього прапорця схема лишається «відкритою».