JSON - это один из самых популярных (а скорее всего и самый) форматов обмена данными на данный момент и он используется повсеместно. Также его можно встретить в требованиях к кандидату для любой вакансии системного аналитика.
JSON (JavaScript Object Notation) — это структурированный текстовый формат обмена данными. Легко читается людьми. Имеет открытый стандарт.
Где используется
JSON независим от языков программирования и часто используется для, например:
Для этого, "под ногами" у сервиса создается конфигурационный файл, в котором в формате json указываются необходимые нам настройки. И при необходимости их изменить, поддержка (обычно) изменяет конфигурационный файл, после чего перезапускает сервис, который, в свою очередь, подхватывает обновленный файл и использует уже новые настройки - удобно и быстро.
Синтаксис
Json-объект — это неупорядоченное множество пар вида {"ключ": "значение"}.
Типы данных"name": "Сергей"
"years": 24
"active": true
"names": [ "Сергей", "Алексей" ]
"person": { "name": "Сергей", "age": 29 }
"children": null
Как нам указывать поля с типом “дата”? JSON не даёт строгих указаний, в каком формате передавать дату и время. Можно использовать unix-time или передавать дату в строке, например, "2008-01-21T11:25:43-05:00"
.
JSON Schema
JSON Schema – это способ описания структуры и ограничений JSON-документов. В большинстве случае применяется для валидации данных при обмене информации между разными системами (часто можно ее встретить в том же swagger).
С помощью ключевых слов в схеме создаются правила валидации структуры объекта и типов его полей.
Пример такой схемы:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "Name of the product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
}
},
"required": ["id", "name", "price"]
}
Эта схема нам говорит о том, что у объекта "Продукт" есть три атрибута: идентификатор, название и стоимость, каждый из которых обязателен и при этом стоимость не может быть отрицательной.
Что позволяет нам валидировать этот объект если, например, ожидаем его получить на вход какого-нибудь нашего метода. Если этот объект не будет удовлетворять указанным требованиям, то мы смело вернем ошибку валидации на такой запрос.
P.S.: Вот тут можно еще немного почитать про JSON.