1. JSON是JavaScript的一个严格子集,但却不从属JavaScript,JSON只是一种数据格式。
2 . 可以在JSON中表示字符串、数值、布尔值和null,但是,JSON不支持JavaScript中的undefined类型。
3. JSON的语法可以有三种类型的值:简单值(boolean、null、string、number)但是不支持undefined; 对象类型(可通过key进行访问);可以是数组型(通过索引访问)。
4. JSON字符串与JavaScript字符串最大的区别在于,JSON字符串必须使用双引号,单引号会导致语法错误;
5. JSON的对象形式与JavaScript的对象形式区别在于,JSON的对象形式不需要声明变量,并且,JSON对象形式的属性名在任何时候都必须加上双引号,并且,在属性的最后一个键值对中,不能加分号(因为他们不是JavaScript);
6. JSON主要用来辅助JavaScript进行数据的交换,如异步请求,数据传递等。
7. JSON对象:ES5规范了JSON的行为,定义了全局的对象JSON,JSON对象有两个方法,一个是stringify(),另外一个是parse(),其中,stringify()的作用是将JavaScript对象序列化成为一个JSON字符串,在序列化JavaScript对象时,所有函数和原型成员都会被有意忽略,不体现在结果中,如果值为undefined的任何属性都将被跳过,所以,返回的结果中,都是值为有效JSON的实例属性。parse()方法将json字符串转化为响应的JavaScript值,如果传给parse()的是一个有效的JSON,该方法会报错。
8. 在使用JSON.stringify()的过程中,事先应当先进行封装,以解决undefined和function被忽略的问题。
9. JSON.stringify()方法接收三个参数,第一参数表示要序列化的JavaScript对象,第二个参数是一个数组,数组中的元素是需要序列化的key值,没有传值的将不会返回,第二个参数也可以是一个函数,函数接收两个参数即对象的key、value,自带循环性质,可以在函数中以switch case写明序列化逻辑,但是也要注意,遇到undefined依然会被忽略,更值得注意的是,switch一定要给default,以保证能够正常的返回值;第三个参数表示序列化后的缩进,如果传入的是一个number类型,将以此为缩进,如果是非number类型,将用来做缩进替代符,缩进符不能超过10个,如果超过10个,将只显示10个。