Формат представления данных JSON
#
Васильев Андрей Михайлович, 2024
Версии презентации
История создания JSON
#
При разработке распределённых веб-приложений множеству процессов приходится
обмениваться данными. В 90-x годах стандартом для представления данных являлся
формат XML (extensible Markup Language)
Веб-разработчикам, работающим на JavaScript, данный формат показался
- Многословным, т.е. требующим большого объёма данных для передачи
- Неудобным для использования, т.е. требующего большого количества действий для
обработки данных. Это скорее проблема среды исполнения, а не формата
В начале 2000х был предложен формат JavaScript Object Notation (JSON), который
решал данные проблемы
- Формат является текстовым, нацеленным на чтение обычным человеком
- Изначально был разработан для использования вместе с JavaScript, основан на
его модели данных
- Сейчас для большинства языков программирования разработаны библиотеки для
работы с этим языком
Ключевые компоненты JSON
#
- JSON концептуально состоит из двух компонентов
- Коллекция пар ключ-значение, объекты
- Ключами всегда являются строки
- Упорядоченный список значений, массивы
- В качестве значений могут выступать объекты, массивы и примитивные значения
- Примитивными значениями могут быть:
- Строки
- Вещественные числа
- Логические значения
true
и false
null
-значение
- Корневым элементом обычно является объект или массив
Написание массива
#
- Описание массива начинается с символа
[
и заканчивается символом ]
- Между ними находятся значения, разделённые запятой
- Массивы не являются типизированными, значением может быть любой элемент
- На практике так обычно не поступают, значения обычно принадлежат к одному
типу
Массив чисел:
- Непечатные символы игнорируются
- Запятая после последнего элемента запрещена
Написание объектов
#
- Описание объекта начинается с символа
{
и заканчивается символом }
- Между ними находятся пары ключ-значение
- Ключом является строка, которая описывается в двойных кавычках
- Разделителем пары является двоеточие
- Значением может выступать любой элемент
- Пары разделяются между собой запятыми
Пример объекта, описывающего треугольник:
{ "sideA": 5,
"sideB": 3, "sideC": 4,
"color": "RED"}
- Непечатные символы игнорируются
- Запятая после последнего элемента
Массивы объектов
#
Если значениями массива являются объекты, то логично, что каждый из них должен
иметь одинаковый набор ключей с соответствующими им типами значений
[
{"sideA": 3, "sideB": 5, "sideC": 4, "color": "GREEN"},
{"sideA": 2, "sideB": 2, "sideC": 2, "color": "BLACK"}
]
Данные в формате JSON могут быть нацелены:
- На обработку человеком
- На обработку машиной
В первом случае документ наполняется большим количеством непечатных символов:
пробелы (отступы), переносы
Во втором — все непечатные символы между элементами убираются, чтобы уменьшить
объём данных
Строки
#
- Строка начинается с двойной кавычки и заканчивается двойной кавычкой
- Между ними можно писать любые символы
- Для включения следующих символов внутрь строки их надо экранировать с помощью
обратной косой черты:
- Двойные кавычки:
\"
- Обратная косая черта:
\\
- Непечатные символы табуляции, переноса и т.п.:
\t
, \n
["Первая строка", "\"Хорошая\" строка"]
Числа
#
- Поддерживаются только числа в десятичной системе исчисления, двоичные,
восьмеричные числа и шестнадцатеричные литералы не поддерживаются
- Поддерживаются только вещественные числа
- При записи целых чисел вещественная часть опускается
- Поддерживается экспоненциальная запись
{
"weight": 150.7,
"height": 65.7,
"score": 1.0e2
}