Открыть сервис

Формат JSON

JSON (JavaScript Object Notation, читается «джейсон») — это текстовый формат обмена данными, основанный на синтаксисе объектов языка JavaScript. JSON является языконезависимым форматом, использующим соглашения, общие для многих языков программирования (включая C, C++, C#, Java, JavaScript, Perl, Python и многие другие). Он предназначен для сериализации структурированных данных и передачи их по сети, а также для хранения в файлах. Ключевыми характеристиками JSON являются простота чтения и написания для человека, а также лёгкость разбора и генерации для машины.

История

Формат JSON был разработан американским программистом Дугласом Крокфордом в начале 2000-х годов. Первоначально он возник как подмножество литеральной нотации объектов JavaScript, используемой в веб-приложениях для асинхронного обмена данными между браузером и сервером (технология AJAX). До этого основным форматом для таких целей был XML, который был более громоздким и требовал больше ресурсов для парсинга.

В 2001 году Крокфорд и Чип Морнингстар впервые предложили использовать JSON как альтернативу XML. В 2002 году Крокфорд зарегистрировал домен json.org и опубликовал спецификацию. В 2006 году он официально представил JSON в качестве спецификации RFC 4627 (IETF). С тех пор формат получил широчайшее распространение, став де-факто стандартом для обмена данными в RESTful API, конфигурационных файлах и многих других областях. В 2013 году была опубликована обновлённая спецификация RFC 7158, а в 2017 году — стандарт ECMA-404, который закрепил синтаксис JSON на международном уровне.

Структура и синтаксис

JSON представляет собой набор пар «ключ: значение», организованных в две основные структуры данных: объект и массив. Синтаксис JSON является подмножеством синтаксиса JavaScript, но с рядом ограничений.

Типы данных

JSON поддерживает следующие типы данных:

Правила синтаксиса

Пример JSON

``json { "person": { "firstName": "Пётр", "lastName": "Петров", "age": 35, "isEmployed": true, "address": { "city": "Москва", "street": "Тверская", "postalCode": null }, "phoneNumbers": [ {"type": "home", "number": "495-123-4567"}, {"type": "work", "number": "495-765-4321"} ] } } ``

Применение

JSON используется в самых разных областях разработки программного обеспечения и веб-технологий.

Веб-API и AJAX

Основная сфера применения JSON — обмен данными между клиентом (например, веб-браузером или мобильным приложением) и сервером. RESTful API практически повсеместно используют JSON в качестве формата для сериализации запросов и ответов. Это позволяет веб-страницам динамически обновлять содержимое без перезагрузки (технология AJAX).

Конфигурационные файлы

JSON часто используется для хранения конфигураций приложений. Например, файлы package.json в экосистеме Node.js, composer.json в PHP, manifest.json для веб-приложений и расширений браузеров. Благодаря читаемости и простоте, JSON удобен для ручного редактирования и автоматической обработки.

Хранение данных

Некоторые базы данных, такие как MongoDB и Couchbase, используют JSON-подобные форматы (BSON — бинарный JSON) для хранения документов. Также JSON может использоваться для хранения небольших объёмов данных в файловой системе (например, файлы .json для сохранения настроек или кэша).

Сериализация данных

JSON является одним из основных форматов для сериализации объектов в языках программирования. Библиотеки для работы с JSON существуют практически для всех популярных языков (Python, Java, C#, PHP, Ruby, Go, Rust и др.), что делает его универсальным средством для передачи данных между системами на разных языках.

Преимущества и недостатки

Преимущества

Недостатки

Сравнение с XML

JSON и XML являются двумя основными текстовыми форматами для обмена данными. Основные различия:

ХарактеристикаJSONXML
СинтаксисЛаконичный, основан на парах ключ-значениеГромоздкий, основан на тегах
ЧитаемостьВысокая для простых структурСредняя, сложнее для массивов
Размер данныхМеньшеБольше (из-за закрывающих тегов)
Типы данныхОграниченный набор (число, строка, bool, null)Все данные — строки (требуется преобразование)
Поддержка схемВнешняя (JSON Schema)Встроенная (DTD, XSD)
КомментарииНетДа
ПарсингБыстрый, простойБолее медленный, сложный
ПрименениеВеб-API, конфиги, NoSQL БДДокументооборот, SOAP, конфиги (Java, .NET)

Инструменты и библиотеки

Для работы с JSON существует множество инструментов:

Интересные факты

Источники

  1. RFC 8259 — The JavaScript Object Notation (JSON) Data Interchange Format (IETF).
  2. ECMA-404 — The JSON Data Interchange Syntax (Ecma International).
  3. Crockford, D. (2006). JSON: The Fat-Free Alternative to XML.
  4. Документация по JSON на сайте json.org.
  5. Стандартная библиотека Python, раздел json.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →