Что такое JSON — Введение
JSON или — текстовый формат обмена данными, основанный на JavaScript. Но может использоваться в любом языке программирования.
33К открытий34К показов
JSON или JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript. Но при этом он может использоваться в любом языке программирования. Формат был разработан Дугласом Крокфордом.
JSON используется в REST API. Также в качестве альтернативы можно использовать XML, но разработчики больше предпочитают именно JSON, так как он более читабельный и меньше весит.
Как устроен JSON
В качестве значений в JSON могут быть использоваться:
- числа;
- строки;
- массивы;
- JSON-объекты;
- литералы (логические значения true, false и null).
С простыми значениями не возникнет никаких трудностей. Разберём массивы и JSON-объекты, ведь, по сути, придётся работать именно с ними.
JSON-объект
JSON-объект — это неупорядоченное множество пар «ключ:значение»
, заключённых в фигурные скобки { }
и взаимодействие с ним проходит, как со словарем.
Ключ — это название параметра (свойства), который мы передаём серверу. Он служит маркером для принимающей запрос системы, чтобы она поняла, что мы ей отправили.
Давайте рассмотрим простой пример:
Мы передали значение "John"
с ключом "name"
, чтобы получить это свойство, нужно обратиться по его ключу, без которого сделать это было бы невозможно.
Значение может быть не только строкой или числом. Это может быть и другой объект! Или массив, или объект в массиве, массив в объекте… Абсолютно любое количество уровней вложенности!
Если мы говорим о параметрах, то в кавычки помещаются только строки, все остальное — нет.
Переносы строк делать необязательно. Вообще пробелы и переносы нужны только человеку для читабельности, система поймёт и без них.
Например, мы можем записать JSON-объект таким образом, и это тоже будет правильно:
Ключ — ВСЕГДА строка, и мы в любом случае берём его в кавычки.
Ключи могут быть записаны в любом порядке, ведь, JSON-объект — это неупорядоченное множество пар «ключ:значение»
.
Если я хочу обратиться к "name"
, как мне это сказать? В Python есть два варианта это сделать:
- Получить значение с помощью метода
get()
. - Получить значение по ключу.
get() vs dict[key]
Разница между этими вариантами заключается в том, что если вы обратитесь к ключу, которого нет, то получите ошибку KeyError
.
Но если воспользуетесь методом get()
, то получите пустое значение:
Также у этого метода есть второй передаваемый аргумент, который будет предаваться если ключа нет:
JSON-массив
Массив заключен в квадратные скобки [ ]
.
Внутри квадратных скобок идет набор значений, разделённых запятыми. Здесь нет ключей, как в объекте, поэтому обращаться к массиву можно только по номеру элемента. И поэтому в случае массива менять местами данные внутри нельзя. Это упорядоченное множество значений, так что порядок важен.
Значения
Внутри массива могут быть любые значения:
- Цифры;
- Строки;
- Литералы;
- Массивы;
- Объекты;
- Смесь.
Well Formed JSON
JSON должен быть well formed
, то есть синтаксически правильный.
Правила well formed
JSON:
- Данные написаны в виде пар «ключ:значение»
- Данные разделены запятыми
- Объект находится внутри фигурных скобок
{ }
- Массив — внутри квадратных
[ ]
Чтобы проверить JSON на синтаксис, можно использовать любой JSON Validator. Я использую JSON Formatter, он не только проверяет корректность синтаксиса, но и форматирует JSON в читабельный визуальный формат!
Из этого:
Он сделает вот это:
Итого
JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript, но может использоваться в любом языке программирования. Легко читается человеком и машиной. Часто используется в REST API (чаще, чем XML из-за лучшей читабельности и меньшего веса).
Корректные значения JSON:
- JSON-объект — неупорядоченное множество пар
«ключ:значение»
, заключённое в фигурные скобки{ }
; - массив — упорядоченный набор значений, разделённых запятыми. Находится внутри квадратных скобок
[ ]
; - число (целое или вещественное);
- литералы true (логическое значение
«истина»
), false (логическое значение«ложь»
) и null; - строка.
33К открытий34К показов