Обычно 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).