> For the complete documentation index, see [llms.txt](https://strctr.gitbook.io/programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://strctr.gitbook.io/programming/01-languages/javascript/01-language/b-structured/b4-json/02-json-and-js.md).

# 02. JSON and JavaScript

JSON - это стандарт передачи данных, а не часть языка JS. JSON хоть и был списан c нотации JS объектов не является полноправной частью спецификации JS.

Синтаксис формата JSON является подмножеством синтаксиса языка JS и не может использоваться для представления всех возможных значений, допустимых в JavaScript:

* Ключи в JSON являются только строки в двойных кавычках.
* Ключ в JSON может быть любой валидной строкой.
* Значения в JSON должны быть одним из возможных допустимых типов данных: объекты, массивы, строки, конечные числовые значения, `true`, `false` и `null`.
* Значения `NaN`, `Infinity` и `-Infinity` преобразуются в значение `null`.
* Значением в JSON не может быть функция.
* В конце JSON не нужно ставить точку с запятой.

Полученный JSON в JS необходимо разобрать и преобразовать в JS-объект при помощи каких-либо функций. Для сериализации и восстановления объектов JavaScript стандартом ES5 предоставляются встроенные функции `JSON.stringify()` и `JSON.parse()`:

```javascript
const o = { x: 1, y: { z: [false, null, ""] } };
const s = JSON.stringify(o); // s == "{"x":1,"y":{"z":[false,null,""]}}"
const p = JSON.parse(s); // p is deep copy of o
```
