Добавить в корзинуПозвонить
Найти в Дзене
Technokrat

Что такое JSON — Введение

JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Но при этом он может использоваться в любом языке программирования (К примеру Python). Формат был разработан Дугласом Крокфордом. JSON используется в REST API. Альтернатива на данный момент XML, но разработчики больше предпочитают именно JSON, так как он более читабельный и меньше весит. Как устроен JSON В качестве значений в JSON могут быть использоваться: · числа · строки · массивы · JSON-объекты · литералы (логические значения true, false и null). С простыми значениями не возникнет никаких трудностей. Разберём массивы и JSON-объекты, ведь, по сути, придётся работать именно с ними. JSON-объект JSON-объект — это неупорядоченное множество пар <<key:value>>, заключённых в фигурные скобки { } и взаимодействие с ним проходит, как со словарем. Ключ (key) — это название параметра (свойства), который мы передаём серверу. Он служит маркером для принимающей запрос системы, чтобы она поняла, что мы е

JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Но при этом он может использоваться в любом языке программирования (К примеру Python). Формат был разработан Дугласом Крокфордом.

JSON используется в REST API. Альтернатива на данный момент XML, но разработчики больше предпочитают именно JSON, так как он более читабельный и меньше весит.

Как устроен JSON

В качестве значений в JSON могут быть использоваться:

· числа

· строки

· массивы

· JSON-объекты

· литералы (логические значения true, false и null).

С простыми значениями не возникнет никаких трудностей. Разберём массивы и JSON-объекты, ведь, по сути, придётся работать именно с ними.

JSON-объект

JSON-объект — это неупорядоченное множество пар <<key:value>>, заключённых в фигурные скобки { } и взаимодействие с ним проходит, как со словарем.

Ключ (key) — это название параметра (свойства), который мы передаём серверу. Он служит маркером для принимающей запрос системы, чтобы она поняла, что мы ей отправили.

Ключ всегда строка, и мы в любом случае берём его в кавычки.

Ключи могут быть записаны в любом порядке, ведь, JSON-объект — это неупорядоченное множество пар <<key:value>>.

Давайте рассмотрим простой пример:

{

"name": "John",

"age": 26

}

Мы передали значение "John" с ключом "name", чтобы получить это свойство, нужно обратиться по его ключу, без которого сделать это было бы невозможно.

Значение может быть не только строкой или числом, но и массивом или объект, или массив с объектами. Абсолютно любое количество уровней вложенности!

Переносы строк или пробелы делать необязательно. Это нужно для читабельности.

Например, мы можем записать JSON-объект таким образом, и это тоже будет правильно:

{"name":"John","age":26}

Хоть читабельности не убавилось (в данном случае), но если представить большое количество данных, то пробелы и переносы для человека будут очень важны…

Если я хочу обратиться к "name", как мне это сказать? В Python есть два варианта, как это сделать:

  1. Получить значение с помощью метода get().

2. Получить значение по ключу.

get() vs dict[key]

Разница между этими вариантами заключается в том, что если вы обратитесь к ключу, которого нет, то получите ошибку KeyError.

person = {

"name": "John",

"age": 26

}

print(person[“last_name”])

>>> KeyError Traceback (most recent call last)

>>> KeyError: 'last_name'

Но если воспользуетесь методом get(), то получите пустое значение:

last_name = person.get("last_name")

print(type("last_name"))

>>> NoneType

Также у этого метода есть второй передаваемый аргумент, который будет предаваться если ключа нет:

last_name = person.get("last_name", "There is no last_name")

print(last_name)

>>> 'There is no last_name'

get() может оказаться более полезным при написании кода, ведь вам не надо будет обращаться к try – except во избежание ошибок.

JSON-массив

Массив заключен в квадратные скобки [ ].

["MALE", "FEMALE"]

Внутри квадратных скобок идет набор значений, разделённых запятыми. Здесь нет ключей, как в объекте, поэтому обращаться к массиву можно только по номеру элемента. В данном случае менять местами данные нельзя.

Значения

Внутри массива могут быть любые значения:

· Цифры;

[1, 5, 10, 33]

· Строки;

["MALE", "FEMALE"]

· Литералы;

[true, false]

· Массивы;

["MALE", "FEMALE", [1, 5, 10, 33]]

· Объекты;

[1, {a:1, b:2}, "John"]

· Смесь.

[1, "John", true, [1, 5, 10, 33], {"a": 1, "b": 2}]

Well Formed JSON

Правила well formed JSON (Синтаксическая проверка):

  1. Данные написаны в виде пар «ключ:значение»

2. Данные разделены запятыми

3. Объект находится внутри фигурных скобок { }

4. Массив — внутри квадратных [ ]

Чтобы проверить JSON на синтаксис, можно использовать любой JSON Validator. К примеру, JSON Formatter, он проверяет корректность синтаксиса и форматирует JSON в читабельный визуальный формат

Из этого:

{"name": "John", "age": 26, "is_married": false, "children": { "name": "Julia", "age": null},"skills": ["Python", "Git", "Django", "Linux"]}

Он сделает вот это:

{

"name": "John",

"age": 26,

"is_married": false,

"children": {

"name": "Julia",

"age": null

},

"skills": [

"Python",

"Git",

"Django",

"Linux"

]

}

Итого

JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript, но может использоваться в любом языке программирования. Легко читается человеком и машиной. Часто используется в REST API (чаще, чем XML из-за лучшей читабельности и меньшего веса).

Корректные значения JSON:

  1. JSON-объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки { };

2. массив — упорядоченный набор значений, разделённых запятыми. Находится внутри квадратных скобок [ ];

3. число (целое или вещественное);

4. литералы true (логическое значение «истина»), false (логическое значение «ложь») и null (не имеет логического значения);

5. строка (записывается в кавычках).

Большая часть статьи взята с сайта tproger.ru

Ссылка на статью: https://tproger.ru/articles/chto-takoe-json-vvedenie/