JSON操作扩展
前后端分离目前是开发的主流,前后端在交互过程中少不了要和数据打交道,自然也就少不了要接触JSON这种数据格式(画重点,JSON只是一种数据格式)
常用的JSON方法
- JSON.stringify() 将js数据转换为JSON格式(这个过程叫序列化)
- JSON.parse() 将JSON格式的数据转换为JS数据 (这个过程叫解析)
这两个方法是操作JSON数据必备的,通常我们都是直接传递一个参数即我们需要操作的数据,但是这两个方法还可以接受其余参数。
JSON.stringify()扩展
完整的来讲,JSON.string()可以接受三个参数
- 第一个参数即我们需要操作的数据这里暂叫data
- 第二个参数可以是一个数组或者一个函数
当第二个参数是一个数组时JSON.stringify(data,[“key1”,“key2”])的结果中将只包含数组中列出的属性
当第二个参数是一个函数时,函数的返回值就是要序列化的结果
该函数接受两个参数属性名key,属性值value
var book = {
"title":"JSON",
year:2019,
edition:3
}
var json1 = JSON.stringify(book,function(key,value){
switch(key){
case title : return value ;//不变
case year : return 2020; //将结果更改为2020
case edition : undefined; //返回undefined该属性会被删除
}
});
- 第三个数可以是一个数字或者是一个字符串
如果第三个参数是一个数字,则表示首行缩进的字符,最大10个操作10会被设置为10个
如果第三个参数是一个字符串,则会将该字符串作为缩进的占位符,最多10个超过10个会被截取
JSON.parse()扩展
JSON.parse()可以接受来两个参数
- 第一个参数是需要操作的数据data
- 第二个参数是一个函数
函数的参数同样是key,value原理同JSON.stringify()具体用法参见下图
此外JSON.stringify()不能满足序列化要求时还可以为对象设置toJSON()方法用以自定义序列化的要求
toJSON()可以作为过滤器的补充,实现原理如下:
- 如果存在toJSON()方法且能通过它取得有效的值,则调用该方法,否则返回对象本身