Serializing Objects
Object serialization is the process of
converting an object’s state to a string from which it can later be
restored. ECMAScript 5 provides native functions JSON.stringify()
and JSON.parse()
to serialize and restore
JavaScript objects. These functions use the JSON data interchange
format. JSON stands for “JavaScript Object Notation,” and its syntax
is very similar to that of JavaScript object and array
literals:
o
=
{
x
:
1
,
y
:
{
z
:
[
false
,
null
,
""
]}};
// Define a test object
s
=
JSON
.
stringify
(
o
);
// s is '{"x":1,"y":{"z":[false,null,""]}}'
p
=
JSON
.
parse
(
s
);
// p is a deep copy of o
The native implementation of these functions in ECMAScript 5 was modeled very closely after the public-domain ECMAScript 3 implementation available at http://json.org/json2.js. For practical purposes, the implementations are the same, and you can use these ECMAScript 5 functions in ECMAScript 3 with this json2.js module.
JSON syntax is a subset of JavaScript
syntax, and it cannot represent all JavaScript values. Objects,
arrays, strings, finite numbers, true
, false
, and null
are supported and can be serialized and
restored. NaN
, Infinity
, and -Infinity
are serialized to null
. Date objects are serialized to
ISO-formatted date strings (see the Date.toJSON()
function), but JSON.parse()
leaves these in string form and
does not restore the original Date object. Function, RegExp, and Error
objects and the undefined
value
cannot be serialized or restored. JSON.stringify()
serializes only the enumerable ...
Get JavaScript: The Definitive Guide, 6th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.