json的语法可以表示三种类型的值
1、简单值(字符串 数值 布尔值 null)
2、对象
3、数组
属性名必须双引号
{
“name”:“xx”,
“age”:23,
“school”:{
“name”:“abc”,
addr:“xxx”
},
tel:[15xxxxxxx,46xxxxxxxxx],
info:[“zbc”,23232,true]
}
解析与序列化
解析JSON.parse(jsonText,function(键,值){
还原函数,接受两个值
return 的是undefined就删除对应的键
返回其他值就插入对应的键中
})
序列化JSON.stringify(obj,过滤器数组或者函数,缩进的控制数字最大为10字符串为制表符)
过滤器为函数时function(键,值){
返回undefined就删除对应的键
}
序列化顺序:
1,根据对象里的toJSON()方法返回的结果进行2
2,返回的结果进行过滤
3,进行相应序列化
4,根据第三个参数进行格式化
PS:toJSON()方法定义在要序列化的对象里,作为JSON.stringify过滤器的补充过滤
toJSON()方法可以返回任何值
undefined 如果此对象在另一个对象中,值变为null
data={
name:"zh",
tel:123456789,
school:{
name:"zbc",
addr:"diqiu",
toJSON:function(){
return undefined
}
}
}
var jsontext = JSON.stringify(data)
console.log(jsontext);//{"name":"zh","tel":123456789}
如果是顶级对象,值变为undefined
data={
name:"zh",
tel:123456789,
school:{
name:"zbc",
addr:"diqiu"
},
toJSON:function(){
return undefined
}
}
var jsontext = JSON.stringify(data)
console.log(jsontext); //undefined