# 01. JSON

**`JSON`** - **Java Script Object Notation** - текстовый формат обмена данными между клиентом и сервером, основанный на синтаксисе объектов JavaScript. Из за своих размеров и удобства конвертации в структуры данных этот формат стал доминирующим в качестве стандарта передачи данных.

* Этот формат имеет всего несколько дополнительных символов к самими данным.
* Этот формат очень легко разбирать.
* В последнее время `JSON` полностью заменил XML в качестве стандарта передачи данных.

`JSON`-файл состоит из теста, содержащего какое-либо `JSON`-значения:

```
JSONText :
    JSONValue

JSONValue :
    JSONNullLiteral
    JSONBooleanLiteral
    JSONObject
    JSONArray
    JSONString
    JSONNumber
```

`JSON` имеет шесть видов значений:

* Объект (множество пар имя/значение),
* Массив (упорядоченная последовательность значений в квадратных кавычках) `[1, 2, 3, 4, "Tick"]`,
* Строки, заключенные в двойные кавычки `"JSON-string"`,
* Числа (`1.344`),
* Логические значения (`true/false`),
* А так же специальное значение `null`.

Объекты в JS - это множество пар ключ-значение. Имя в паре является строкой в двойных кавычках `"name"`. Имя от значения отделяются двоеточием `:`, после чего указывается значение. Пары имя/значение отделены друг от друга запятыми. Значением ключа объекта должно быть `JSON`-значение.

```javascript
{
  "address": {
    "line1": "555 Main Street",
    "city": "Denver",
    "stateOrProvince": "CO",
    "zipOrPostalCode": 80202,
    "country": "USA"
  }
}
```

`JSON`-объекты могут быть вложены в другие `JSON`-объекты как отдельные значения, но эффективнее оставить их относительно плоскими.
