JSON и JSON Schema



JSON (JavaScript Object Notation) — это структурированный текстовый формат обмена данными. Легко читается людьми. Имеет открытый стандарт.



Где используется

JSON независим от языков программирования и используется повсеместно, например:

💩при обмене данными через API. Например, мы можем как один из вариантов передавать body HTTP-запроса в формате JSON (но не обязательно только JSON!)

💩при создании параметров конфигурации для систем и сервисов

💩в NoSQL базах данных, например, в MongoDB



Синтаксис

Json-объект — это неупорядоченное множество пар вида {"ключ": "значение"}.

💩Ключ – это название параметра, пишется в двойных кавычках

💩Значение для ключа указывается после двоеточия

💩Между парами ключ-значение ставится запятая. После последней пары запятая не ставится

💩Писать ключи можно в любом порядке



Типы данных

💩Строка – "name": "Вася"

💩Число – целое или с запятой – "years": 24

💩boolean – true или false – "resident": true

💩null – пустое значение – "children": null

💩Массив – "experience": [ "Повар", 2, "Аналитик", 1 ]

💩Объект – "experience": { "Повар": 2, "Аналитик": 1 }



Классический JSON (по стандарту RFC 8259) не поддерживает комментарии. Однако существует расширение стандартного JSON – JSON5, в котором можно вставлять комментарии.



А где же тип “дата”? JSON не даёт строгих указаний, в каком формате передавать дату и время. Можно использовать unix-time или передавать дату в строке по ISO 8601, например, "2012-04-21T18:25:43-05:00".



JSON Schema



JSON Schema – это способ описания структуры и ограничений JSON-документов. Схема создана для описания JSON-данных, но и сама она при этом является JSON-объектом. С помощью ключевых слов в схеме создаются правила валидации структуры объекта и типов его полей.



В отличие от XML-схемы, которая имеет стандарт и строго диктует определение документа в рамках XML, JSON-схема более гибкая и простая.



Применение JSON Schema



1️⃣ Описание формата данных в API-контрактах, которое читается машиной и понятно человеку



2️⃣ Валидация данных в JSON-документах. Здесь имеется в виду не просто проверка на корректность формата, а проверка специфических требований и ограничений



3️⃣ Автоматическая генерация примеров запросов и ответов API: JSON Schema позволяет генерировать динамические данные, соответствующие схеме. Эти примеры ответов можно использовать для создания заглушек



4️⃣ Создание автоматической документации к API



5️⃣ Автоматическая генерация кода. На основе схемы можно создавать SDK для API на любой платформе



📄 Спецификации

1. RFC 8259 — про JSON

2. ISO 8601 — про формат дат

3. JSON Schema

4. JSON5



📎 Материалы по JSON

0. Пример JSON

1. Что такое JSON и как с ним работать

2. Хорошо написанная статья в англоязычной Википедии

3. Типичные ошибки в JSON

4. JSON онлайн редактор

5. JSON конвертер в YAML

6. XML конвертер в JSON

7. YAML конвертер в JSON, XML, CSV



📎 Материалы по JSON Schema

1. Объяснение JSON-схемы с примерами от ВК

2. JSON Schema. Быть или не быть?

3. Понимание JSON схемы

4. Пример JSON-схемы

5. Пример онлайн-валидатора JSON-схемы

6. Конвертер JSON-схемы на разные языки



Видео

1. JSON за 5 минут

2. Формат JSON. От основ к практике

3. Полный курс по JSON для начинающих

4. Валидация JSON в Postman



#проектирование #api