JSON
JSON (JavaScript Object Notation) – формат для хранения и передачи структурированных данных, основан на синтаксисе объектов JavaScript (но не привязан к нему).
Синтаксис JSON повторяет синтаксис объекта в JavaScript: данные записываются в виде пар «ключ : значение» и разделяются запятыми. Важно помнить, что после последней пары запятая не ставится.
Ключи – строковые переменные, а значения могут быть строками, числами, булевыми параметрами, объектами, массивами или null.
JSON-файл может быть сохранён как текстовый файл с расширением .json. Пример содержимого такого файла:
Даты в JSON переводятся в строковый формат ISO 8601: 2023-08-24T20:45:03.408Z.
Для хранения данных в JSON используются две структуры – объекты и массивы.
Объект – неупорядоченная коллекция. Для неё непринципиально, в каком порядке следуют пары «ключ : значение». Пример объекта – выше.
Массив – упорядоченный список значений. Пример:
В отличие от объекта, в массиве важен порядок элементов. Тут нет ключей, поэтому обращаться к значениям мы можем только по индексу элемента. Важно помнить, что у первого элемента индекс 0.
Объекты и массивы могут быть вложены друг в друга, количество уровней вложенности не ограничено.
JSON5 – расширение JSON, повышающее читаемость и удобство записи данных. Особенности JSON5:
допустимы комментарии;
необязательно использовать кавычки для ключей;
есть специальный формат для дат и времени;
поддерживает многострочный текст;
допускает запись чисел с подчёркиваниями для улучшения читаемости;
поддерживает шестнадцатеричную и восьмеричную систему счисления.
JSON Schema позволяет добавить в файл метаданные, например – какие поля обязательные и какие типы данных они могут содержать. JSON Schema используется для валидации данных при обмене информацией. Пример «схемы»:
Здесь в первой строке указана ссылка на версию спецификации JSON Schema. Далее «схема» говорит, что данные должны быть объектом типа «object»; объект должен содержать три обязательных поля: «name», «age» и «address»; у каждого поля свой тип данных: «string» для имени, «number» для возраста и «object» для адреса; поле «address» должно быть объектом и содержать два обязательных подполя: «city» и «zip», которые относятся к строкам.
Сериализация – преобразование данных из внутреннего формата, например из JavaScript-объекта, в формат JSON, который может быть отправлен на сервер. В большинстве языков программирования для этого есть встроенные функции/библиотеки. Например, в JavaScript преобразование объекта person в JSON-файл выглядит так:
Десериализация, наоборот, преобразует данные из формата JSON обратно во внутренний формат, с которым программист может работать в своём коде:
JSON Validator https://jsonlint.com/
Пример получения доступа к данным в JSON-файле, который содержит объекты и массивы:
Даём имя переменной – superHeroes. Внутри неё хотим получить доступ к свойству members, поэтому пишем ['members']. members содержит массив с объектами. Мы хотим получить доступ ко второму объекту внутри этого массива, поэтому пишем [1]. Внутри этого объекта мы хотим получить доступ к свойству powers, поэтому пишем ['powers']. В свойстве powers находится массив, содержащий сверхспособности выбранного героя. Нам нужен третий, поэтому пишем [2].
Last updated