JSON 对象有两个方法:stringify()和 parse()。在简单的情况下,这两个方法分别可以将JavaScript 序列化为 JSON 字符串,以及将 JSON 解析为原生 JavaScript 值。

    1. let book = {
    2. title: "Professional JavaScript",
    3. authors: [
    4. "Nicholas C. Zakas",
    5. "Matt Frisbie"
    6. ],
    7. edition: 4,
    8. year: 2017
    9. };
    10. let jsonText = JSON.stringify(book);

    这个例子使用 JSON.stringify()把一个 JavaScript 对象序列化为一个 JSON 字符串,保存在变量jsonText 中。默认情况下,JSON.stringify()会输出不包含空格或缩进的 JSON 字符串,因此jsonText 的值是这样的:

    1. {"title":"Professional JavaScript","authors":["Nicholas C. Zakas","Matt Frisbie"],
    2. "edition":4,"year":2017}

    在序列化 JavaScript 对象时,所有函数和原型成员都会有意地在结果中省略。此外,值为 undefined
    的任何属性也会被跳过。最终得到的就是所有实例属性均为有效 JSON 数据类型的表示。

    JSON 字符串可以直接传给 JSON.parse(),然后得到相应的 JavaScript 值。比如,可以使用以下代码创建与 book 对象类似的新对象:

    1. let bookCopy = JSON.parse(jsonText);

    注意: book 和 bookCopy 是两个完全不同的对象,没有任何关系。但是它们拥有相同的属性和值。如果给 JSON.parse()传入的 JSON 字符串无效,则会导致抛出错误。