- Что такое JSON
- Как возникло
- Особенности
- Синтаксис
- Типы данных в JSON
- Пример JSON-документа
- Сферы применения
- JSON vs XML
- Минусы
- Инструменты для JSON
- Шпаргалки pdf-ки
- Часто спрашивают
JSON (JavaScript Object Notation) — язык обмена данными. Основан на JavaScript, но по синтаксису похож и на Python, достаточно легко читаемый. Файлы с расширением .json. Альтернатива XML.
Главное
- Поддерживается во всех браузерах
- Легко читается и пишется
- Достаточно простой синтаксис
- Можно нативно парсить в JavaScript с помощью функции eval()
- Поддерживается всеми JavaScript-фреймворками
- Поддерживается большинством бэкенд-технологий
- JSON нативно распознается JavaScript
- Удобно передавать и сериализовать структурированные данные по сети
- Поддерживается всеми языками программирования
История
Дуглас Крокфорд описал формат JSON в начале Нулевых. В 2005 Yahoo! переводит свои данные в JSON. Международным ECMA-стандартом становится в 2013. Свежий стандарт утвержден в 2017.
Особенности
- Простота использования — JSON API предлагает высокоуровневый «фасад», упрощающий часто используемые сценарии использования.
- Производительность — JSON работает довольно быстро, так как занимает сравнительно мало места в памяти, что удобно для больших графов и систем.
- Бесплатный — библиотека с открытым исходным кодом, бесплатная.
- Не требует создания маппингов — Jackson API предоставляет стандартные маппинги (отображения) для объектов, подлежащих сериализации.
- Чистый код — Создает удобочитаемый и совместимый результат в JSON-формате.
- (Не)зависимость — Библиотека JSON не требует подключения других библиотек.
Синтаксис
Правила синтаксиса JSON:
- Данные должны быть в парах имя/значение
- Данные должны быть разделены запятыми
- Фигурные скобки должны содержать объекты
- Квадратные скобки содержат массивы
Типы данных в JSON

Число
- Число: Число — это формат с плавающей точкой двойной точности, который зависит от метода его реализации. В JSON нельзя использовать шестнадцатеричный и восьмеричный форматы.
Пример:
{"возраст":30}

Строка
- Строка: серия Unicode-символов, заключенных в двойные кавычки и имеющих экранирование обратной косой чертой (бэкслэшем).
Пример:
{"имя":"Павел"}

True/False
- Boolean — Хранит только истинные или ложные значения.
Пример:
{"продано":true}
Массив
- Массив — это упорядоченная коллекция значений. Массив следует использовать, когда имена ключей являются последовательными целыми числами. Он должен быть заключен в квадратные скобки, которые должны быть разделены ‘,’ (запятой)
Пример:
{
"сотрудники":["Петя", "Аня", "Миша"]
}

- Null — Значения в JSON могут быть нулевыми.
Пример:
{«фамилия»:null}
- Пробел — Между парой JSON-значений можно вставить пробельные символы. Обычно используются, чтобы сделать JSON-документы более читабельными.
Общий синтаксис:

Пример JSON-файла
Пример JSON-файла (документ Яндекс Едадил для партнеров):
{ "catalogs": [ { "conditions": "Предложения действительны для Москвы, Переславль-Залесского и Костромской области. Информацию об ассортименте товаров, участвующих в акции, уточняйте в магазине. Количество товаров ограничено, не является публичной офертой.", "date_end": "2020-06-12", "date_start": "2020-06-05", "id": "1234", "image": "https://retailer1234.ru/catalogs/1234.jpg", "is_main": true, "offers": [ "11111", "22222", "33333" ], "target_regions": [ "Россия, Москва", "Россия, Ярославская область, Переславль-Залесский", "Россия, Костромская область, Островский район, село Адищево" ] }, { "conditions": "Предложения действительны в магазине по адресу: Владимир, улица Куйбышева, 26К", "date_end": "2020-06-12", "date_start": "2020-06-05", "id": "5678", "image": "https://retailer1234.ru/catalogs/1234.jpg", "is_main": true, "offers": [ "22222", "33333" ], "target_shops": [ "Владимир, улица Куйбышева, 26К" ] } ], "offers": [ { "barcode": "7501031311309", "date_end": "2020-06-10", "date_start": "2020-06-05", "description": "Молоко \"Домик в деревне\" 3,2% 0,93 л", "discount_label": "1+1", "id": "11111", "image": "https://retailer1234.ru/offers/1234567.jpg", "price_is_from": false, "price_new": 50, "price_old": 100 }, { "barcode": "3113097501031" "description": "Огурцы маринованные \"Дядя Ваня\" 680 г", "id": "22222", "image": "https://retailer1234.ru/offers/5671234.jpg", "price_is_from": false, "price_new": 70, "price_old": 75 }, { "barcode": "1097501031133", "description": "Жевательная резинка Orbit в ассортименте", "id": "33333", "image": "https://retailer1234.ru/offers/10488.jpg", "price_is_from": true, "price_new": 10 } ], "version": 2 }
Применение
Распространенные применения JSON:
- Обмен данными в целом — сериализованная передача структурированных данных
- Асинхронные вызовы данных без необходимости обновления страницы
- Передача данных между сервером и веб-приложениями. Широко используется в приложениях на основе JavaScript, к которым относятся браузерные расширения и веб-сайты.
- В современных языках программирования
- Веб-сервисы и Restful API используют JSON-формат для получения открытых данных
Сравнение JSON и XML
- В JSON не используется закрывающий тег
- JSON короче
- JSON быстрее читается
- и записывается
- JSON может использовать массивы
- XML должен парситься с помощью парсера XML и это намного сложнее.
- JSON можно парсить с помощью стандартной JavaScript-функции.
XML представляет данные в виде дерева, а JSON использует пары ключ-значение.
В следующих примерах одна и та же информация отображается в обоих представлениях данных.
Следующий пример отображает имена трех гостей в JSON.
Пример JSON-документа:
{"guests":[ { "firstName":"John", "lastName":"Doe" }, { "firstName":"María", "lastName":"García" }, { "firstName":"Nikki", "lastName":"Wolf" } ]}
Следующий пример отображает имена трех гостей в XML.
Пример XML-документа:
<guests> <guest> <firstName>John</firstName> <lastName>Doe</lastName> </guest> <guest> <firstName>María</firstName> <lastName>García</lastName> </guest> <guest> <firstName>Nikki</firstName> <lastName>Wolf</lastName> </guest> </guests>
Недостатки JSON
- Нет поддержки пространства имен, следовательно, плохая расширяемость
- Ограниченная поддержка инструментов разработки
- Нет поддержки формального определения грамматики
Инструменты для JSON (сайты и аддоны)
Важные инструменты JSON:
- JSONLint: JSONLint — проект с открытым исходным кодом, который используется в качестве валидатора для JSON.
Ссылка: https://jsonlint.com
- JSON Editor Online: Позволяет редактировать, просматривать и форматировать JSON-файлы. Отображает ваши данные бок о бок в редакторе.
Ссылка: https://jsoneditoronline.org/
- JSON Minifier Tool: Удаляет пробельные символы и сокращает JSON-код
Ссылка: https://www.browserling.com/tools/json-minify
- Converter JSON to XML — простой инструмент для конвертации JSON-кода в XML.
Ссылка: https://codebeautify.org/jsontoxml
- JSON Formatter: Преобразует JSON-код в удобочитаемый вид.
Ссылка: https://jsonformatter.curiousconcept.com/
Шпаргалки pdf-ки
https://assets.hostinger.com/content/tutorials/pdf/JSON-Cheat-Sheet.pdf
https://www.devopsschool.com/cheatsheets/json/json.pdf
https://softmake.com.au/technical-skills/files/JsonReference.pdf
Часто спрашивают:
Как правильно читается JSON?
Произносится как «джэ́йсон», а не «джейсо́н». пруф
Говорят, XML более безопасен, чем JSON?
Действительно, XML проверяет наличие ошибок в сложных данных эффективнее, чем JSON, поскольку XML фокусируется на хранении данных в машиночитаемом виде.
JSON самый популярный форматом обмена данными в веб-разработке?
Да, JSON является самым популярным.
Что нужно изучить перед JSON?
HTML и CSS, и очень желательно основы JavaScript.
Чем открывать JSON-файл?
Любым текстовым редактором, например Блокнотом. Но удобнее редактором с подсветкой синтаксиса.
Почему JSON так называется?
Сначала хотели назвать JSML (Язык Разметки для JavaScript), но Кроуфорд всех переубедил.
Какой Content-Type для передачи JSON-данных?
«application/json».
Douglas Gridley, оф.сайт, Amazon