JSON.stringify()

Обычно JSON используется для обмена данными с сервером.

При отправке на сервер данные всегда передаются в виде строки.

Чтобы преобразовать объект JavaScript в строку, используется функция JSON.stringify().

Преобразование объекта JavaScript в строку

Допустим, что у нас есть следующий объект JavaScript:


var obj = { "name":"John", "age":30, "city":"New York"}; 

Воспользуемся JavaScript функцией JSON.stringify() и преобразуем его в строку:


var myJSON = JSON.stringify(obj); 

В результате у нас будет строка, записанная по правилам JSON.

Теперь myJSON — готовая к отправке на сервер строка:


var obj = { "name":"John", "age":30, "city":"New York"};
var myJSON =  JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON; 

Преобразование массива JavaScript в строку

Также, мы можем преобразовывать массивы JavaScript в JSON строки.

Допустим, что у нас есть следующий объект JavaScript:


var arr = [ "John", "Peter", "Sally", "Jane" ]; 

Воспользуемся JavaScript функцией JSON.stringify() и преобразуем его в строку:


var myJSON = JSON.stringify(arr); 

В результате у нас будет строка, записанная по правилам JSON.

Теперь myJSON — готовая к отправке на сервер строка:


var arr = [ "John", "Peter", "Sally", "Jane" ];
var myJSON =  JSON.stringify(arr);
document.getElementById("demo").innerHTML = myJSON; 

Преобразование дат в строку

Объекты даты и времени (тип Date) нельзя использовать в JSON. Функция JSON.stringify() позволяет преобразовать любой объект даты в JSON строку.


var obj =  { "name":"John", "today":new Date(), "city":"New York"};
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON; 

При получении данных с сервера вы сможете преобразовать строку в объект даты обратно.

Преобразование функций в строку

Функции нельзя использовать в JSON.

Функция JSON.stringify() удалит любую функцию из объекта JavaScript, и ключ, и значение:


var obj =  { "name":"John", "age":function () {return 30;}, "city":"New York"};
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON; 

Этого можно избежать, если преобразовать функцию в строку до того, как использовать функцию JSON.stringify().


var obj =  { "name":"John", "age":function () {return 30;}, "city":"New York"};
obj.age = obj.age.toString();
var myJSON = JSON.stringify(obj);

document.getElementById("demo").innerHTML = myJSON; 

Внимание! Следует избегать использования функций в JSON, так как в этом случае теряется их область видимости, а для обратного преобразования приходится использовать функцию eval(), что нежелательно.

Поддержка браузерами

Функция JSON.stringify() включена во все основные браузеры и в последний стандарт ECMAScript (JavaScript).