> For the complete documentation index, see [llms.txt](https://mp4.gitbook.io/standard/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mp4.gitbook.io/standard/knowledge/bim/dev/format-json.md).

# Формат JSON

**JSON** (JavaScript Object Notation) — это строгий текстовый формат обмена данными, который требует полного соответствия содержимого стандарту и правилам.

{% hint style="success" %}
Для того. чтобы было проще отследить ошибки, рекомендуется открывать JSON с помощью Notepad++, Visual Studio Code и т.д.. Данные редакторы подсвечивают строки с ошибками структуры или правил.
{% endhint %}

### Основные символы

* `{ }`  – фигурные скобки, которые окружают **объект** (набор свойств "ключ-значение");
* `[ ]`  – квадратные скобки, которые окружают **массив** (упорядоченный список элементов);
* `" "`  – двойные кавычки, которые обязательны для всех текстовых типов данных и всех имен ключей;
* `:`  – двоеточие, которое разделяет имя ключа и его значение;
* `,` – запятая, которая разделяет элементы внутри объекта или массива.

### Типы значений

* `"Текст"` – текст, который всегда в двойных кавычках;
* `100`, `-5`, `0.75`  – число без кавычек, которое применяет точку как разделитель;
* `true` или `false`  – логический тип (строго строчными буквами, без кавычек);
* **Объект** - набор свойств "ключ-значение" внутри фигурных скобок;
* **Массив –** упорядоченный список элементов внутри квадратных скобок;
* `null` – отсутствие любого значения.

### Особенности синтаксиса

* **Регистр**: JSON чувствителен к регистру. `Value`, `value` и `VALUE` — это три абсолютно разных ключа;
* **Разделитель**: Для чисел применяется только точка. Запятая всегда воспринимается как разделитель элементов;
* **Положительные числа**: В JSON нет символа «+» для обозначения положительных чисел (пишется просто `100`, а не `+100`);
* **Запрет лишней запятой**: Запятые ставятся **только между** элементами. Запись `["A", "B", "C", ]` вызовет ошибку (лишняя запятая перед закрывающей скобкой), а запись `["A", "B", "C"]` нет ;
* **Экранирование**: Если внутри строки нужно использовать двойную кавычку или обратный слэш, перед ними ставится символ `\`. Например: `"Компания \"Моспроект-4\""` или `"C:\\Program Files\\App"`;
* **Комментарии**: Любые пояснительные комментарии в стандартном файле JSON запрещены.
* **Визуально читаемая структура:** Весь JSON в одну строку или растянутый на 100 страниц с любыми отступами представляют собой абсолютно одинаковые исходные данные. Однако, рекомендуется размещать элементы так, чтобы файл был визуально читаемым. JSON разрешает использовать четыре типа «пустых» символов в любом месте **между** структурными элементами (но не внутри ключей или значений без кавычек):
  * Пробел (Space)
  * Горизонтальная табуляция (`\t`)
  * Перенос строки (`\n`)
  * Возврат каретки (`\r`)

### Визуальная структура

JSON строится по принципу "матрешки":&#x20;

```json
{
  "MainKey": "Value",
  "List": [
    {
      "Item": 1.11,
      "Status": true
    },
    {
      "Item": 2,
      "Status": false
    }
  ]
}
```

{% hint style="warning" %}
Количество открытых скобок, кавычек должно строго соответствовать количеству закрытых.
{% endhint %}
