JSON对象有两个方法:stringify() 和 parse()。在简单的情况下,这两个方法分别可以将JavaScript序列化为 JSON 字符串,以及将 JSON 解析为原生 JavaScript 值。
let book = {
title: "Professional JavaScript",
authors: [
"Nicholas C. Zakas",
"Matt Frisbie"
],
edition: 4,
year: 2017
};
let jsonText = JSON.stringify(book);
这个例子使用 JSON.stringify() 把一个 JavaScript 对象序列化为一个 JSON 字符串,保存在变量jsonText中。默认情况下,JSON.stringify() 会输出不包含空格或缩进的JSON字符串,因此jsonText的值是这样的:
{"title":"Professional JavaScript","authors":["Nicholas C. Zakas","Matt Frisbie"], "edition":4,"year":2017}
在序列化 JavaScript 对象时,所有函数和原型成员都会有意的在结果中省略。此外,值为 undefined 的任何属性也会被跳过。最终得到的就是所有实例属性均为有效 JSON 数据类型的表示。
JSON 字符串可以直接传给 JSON.parse(),然后得到相应的 JavaScript 值。比如,可以使用以下代码创建与 book 对象类似的新对象:
let bookCopy = JSON.parse(jsonText);
注意,book 和 bookCopy 是两个完全不同的对象,没有任何关系。但是它们拥有相同的属性和值。如果给 JSON.parse() 传入的 JSON 字符串无效,则会导致抛出错误。