今天复习了一下json写一下我的心得:
1、首先需要明确的是,json是一种数据格式,而不是一种编程语言。
2、json可以表示三种类型的值:
- 简单值:字符串,数字,布尔型,NULL(不支持undefined)
- 对象
- 数组
3、json中的字符串必须使用双引号,使用单引号会出错;对象中的属性名也要使用双引号
4、javascript和json的区别:
- json没有生命变量(json中没有变量的概念)
- json没有末尾分号
5、json对象有两个方法:stringify(),parse()
stringfy将javascript对象序列化为json字符串,而parse将json字符串解析为javascript对象
JSON.stringfy()可以接受三个参数,参数二可以是数组或者函数:
数组:
JSON.stringify(book,["title","edition"]);//过滤器,表示book中只保留,"title","edition"这两个属性
函数:
JSON.stringify(book,function(key,value){//过滤代码});
第三个参数用于控制结果中的缩进和空白字符,最大缩进空格数为10
JSON.stringify(book,null,"--");
toJSON方法
当JSON.stringify()还是不能满足某些对象进行自定义序列化要求时的需求
1 <!DOCTYPE html> 2 <html> 3 <head> 4 </head> 5 <body> 6 <script> 7 var book = { 8 title: "title", 9 toJSON:function(){ 10 return "ToJSON"; 11 } 12 }; 13 alert(JSON.stringify(book)); 14 </script> 15 </body> 16 </html>
显示结果为ToJSON
序列化对象的顺序如下:
- 如果存在toJSON方法,而且通过它可以取得有效值,则调用该方法,否则返回函数本身
- 如果提供了第二个参数,应用这个函数过滤器。传入过滤器的值是第一步的返回值
- 对第二步返回的所有值进行序列化
- 如果提供了第三个参数,执行相应的格式化