JSON. Быстрый гайд

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

Число

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

Пример: 

{"возраст":30}

Числа в JSON

Строка

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

Пример: 

{"имя":"Павел"}

Строка в JSON

True/False

  • Boolean — Хранит только истинные или ложные значения.

Пример:

{"продано":true}

Массив

  • Массив — это упорядоченная коллекция значений. Массив следует использовать, когда имена ключей являются последовательными целыми числами. Он должен быть заключен в квадратные скобки, которые должны быть разделены ‘,’ (запятой) 

Пример: 

{

"сотрудники":["Петя", "Аня", "Миша"]

}

Массив JSON
  • Null — Значения в JSON могут быть нулевыми.

Пример:

{«фамилия»:null}

  • Пробел — Между парой JSON-значений можно вставить пробельные символы. Обычно используются, чтобы сделать 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


Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас