Сейчас мы с вами будем разбираться с форматом JSON (читается 'джейсон'). Этот формат удобен для компактного хранения данных, а также для обмена данными между сайтами или между сайтом и браузером.

Формат JSON

Сам JSON представляет собой строку. В этой строке данные хранятся в формате, похожим на обычные объекты JavaScript. Но есть отличия: все строки (как ключи, так и значения) обязательно должны быть в двойных кавычках. Одинарные кавычки и ключи без кавычек запрещены.

Кроме того: числа в кавычки можно не брать, разрешены значения null и true/false. Также в качестве значений могут быть массивы и объекты любого уровня вложенности.

Давайте посмотрим на строки с корректным JSON:

var json = '[0, 1, 2, 3]';
var json = '{
	"name": "Иван",
	"age": 20,
	"online": true,
	"wife": null,
	"arr": [1, 2, 3, 4],
}';

А вот этот JSON будет некорректным:

var json = '{
	name: "Иван", //ключ без кавычек недопустим
	"age": '20', //одинарные кавычки недопустимы
}';

var result = JSON.parse(json);
console.log(result);

Давайте теперь рассмотрим методы для работы с JSON.

Метод JSON.parse

Метод JSON.parse преобразует строку с JSON в обычный объект JavaScipt, с которым можно будет работать дальше обычными средствами:

var json = '{
	"name": "Иван",
	"age": 20,
	"online": true,
	"wife": null,
	"arr": [1, 2, 3, 4],
}';

var result = JSON.parse(json);
console.log(result); //увидим объект

Метод JSON.stringify

Метод JSON.stringify преобразует объекты JavaScript в строку JSON. Посмотрим на следующих примерах:

var obj = {
	name: 'Иван',
	age: 20,
	bool: true,
	arr: [1, 2, 3, 4],
};

var json = JSON.stringify(obj);
console.log(json);

В результате преобразования получится такая строка:

'{
	"name": "Иван",
	"age": 20,
	"empty": null,
	"arr": [1, 2, 3, 4],
}';

Учтите, что NaN и Infinity преобразуются в null:

var obj = {
	value1: null,
	value2: NaN,
	value3: Infinity,
};

json = JSON.stringify(obj);
console.log(json);

В результате преобразования получится такая строка:

'{
	"value1": true,
	"value2": null,
	"value3": null,
}';

Преобразование объекта в JSON называется сериализацией (говорят: сериализуем объект в строку).