---
sidebar_position: 11
---

# Формат JSON

- JSON – это формат данных, который имеет собственный независимый стандарт и библиотеки для большинства языков программирования.
- JSON поддерживает простые объекты, массивы, строки, числа, логические значения и null.
- JavaScript предоставляет методы JSON.stringify для сериализации в JSON и JSON.parse для чтения из JSON.
- Оба метода поддерживают функции преобразования для интеллектуального чтения/записи.
- Если объект имеет метод toJSON, то он вызывается через JSON.stringify.

JavaScript предоставляет методы:

- JSON.stringify для преобразования объектов в JSON.
- JSON.parse для преобразования JSON обратно в объект.

JSON поддерживает следующие типы данных:

- Объекты \{ ... }
- Массивы [ ... ]
- Примитивы:
  - строки,
  - числа,
  - логические значения true/false,
  - null.

## JSON.stringify
JSON.stringify пропускает некоторые специфические свойства объектов JavaScript
- Свойства-функции (методы).
- Символьные ключи и значения.
- Свойства, содержащие undefined.

💥 ***Важное ограничение: не должно быть циклических ссылок.***

## Исключаем и преобразуем: replacer
- **value** Значение для кодирования.
- **replacer** Массив свойств для кодирования или функция соответствия function(key, value).
- **space** Дополнительное пространство (отступы), используемое для форматирования.

В большинстве случаев JSON.stringify используется только с первым аргументом. Но если нам нужно настроить процесс замены, например, отфильтровать циклические ссылки, то можно использовать второй аргумент JSON.stringify.

```js
let json = JSON.stringify(value[, replacer, space])
```

## Форматирование: space
Третий аргумент в JSON.stringify(value, replacer, space) – это количество пробелов, используемых для удобного форматирования.

## Пользовательский «toJSON»
Как и toString для преобразования строк, объект может предоставлять метод toJSON для преобразования в JSON. JSON.stringify автоматически вызывает его, если он есть.

## JSON.parse
Чтобы декодировать JSON-строку, нам нужен другой метод с именем JSON.parse.
```js
let value = JSON.parse(str[, reviver]);
```
- **str** JSON для преобразования в объект.
- **reviver** Необязательная функция, которая будет вызываться для каждой пары (ключ, значение) и может преобразовывать значение.

Кроме того, JSON не поддерживает комментарии.

🚀 **Источник: [https://learn.javascript.ru/json](https://learn.javascript.ru/json)**