1 序

JSON - 图1

2 语法

JSON - 图2

3 简单值

JSON - 图3
最简单的JSON数据形式就是简单值。
JSON - 图4

4 对象

JSON - 图5
JSON - 图6

5 数组

JSON - 图7
JSON - 图8

6 解析和序列化

JSON - 图9

7 JSON对象

JSON - 图10

JSON对象有两个方法:stringify()和parse()。这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。

在序列化JavaScript对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为undefined的任何属性也都会被跳过。结果中最终都是值为有效JSON数据类型的实例属性。
JSON - 图11
如果传给JSON.parse()的字符串不是有效的JSON,该方法会抛出错误。

8 序列化选项

JSON.stringify()除了要序列化的JavaScript对象外,
还可以接收另外两个参数,这两个参数用于指定以不同的方式序列化JavaScript对象。
第一个参数是过滤器,可以是一个数组,也可以是一个函数;(函数接收两个参数:属性键(名)和属性值)
第二个参数是一个选项,表示是否在JSON字符串中保留缩进。单独或组合使用这两个参数,可以更全面深入地控制JSON的序列化。
实例1:
JSON - 图12
实例2:
JSON - 图13
字符串缩进
JSON - 图14
JSON - 图15

9 toJSON方法

如果一个被序列化的对象拥有 toJSON 方法,那么该 toJSON 方法就会覆盖该对象默认的序列化行为:不是那个对象被序列化,而是调用 toJSON 方法后的返回值会被序列化,
例如:
JSON - 图16
JSON - 图17

10 解析选项

JSON - 图18
JSON - 图19
JSON - 图20
JSON - 图21

11 小结

JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量。JSON使用JavaScript语法的子集表示对象、数组、字符串、数值、布尔值和null。即使XML也能表示同样复杂的数据结果,但JSON没有那么繁琐,而且在JavaScript中使用更便利。
ECMAScript5定义了一个原生的JSON对象,可以用来将对象序列化为JSON字符串或者将JSON数据解析为JavaScript对象。JSON.stringify()和JSON.parse()方法分别用来实现上述两项功能。这两个方法都有一些选项,通过他们可以改变过滤的方式,或者改变序列化的过程。
JSON - 图22