一、语法
JSON的语法可以表示以下三种类型的值
- 简单值:字符串,数值,布尔值,null,但是不可以表示undefinded
- 对象
- 数组
1.1、简单值
JSON必须使用双引号,末尾没有分号
5
"hello world"
1.2、对象
1.3、数组
二、解析与序列化
2.1、JSON对象
stringify():javascript对象序列化为json字符串
parse():将json字符串解析为原生的javascript对象
2.2、序列化选项
JSON。stringify()除了要序列化javascript对象外,还可以接收另外两个参数,这两个参数用于指定以不同的方式序列化Javascript对象。第一个参数是个过滤器,可以是一个数组,也可以是一个函数;第二个参数是一个选中项,表示是否在JSON字符串中保留缩进
2.2.1、过滤结果
第二个参数是数组
JSON.stringify(book,["book","edition"])
第二个参数是函数
var book={
title:"Professional Javascript",
author:[
"Nicholas C,Zakas"
],
edition:3,
year:2011
}
var jsonText=JSON.stringify(book,function(key,value){
switch(key){
case "author":
return value.join(",")
case "year":
return 5000
case "edition":
return undefined
default:
return value
}
})
console.log(jsonText)
2.2.2、字符串缩进
最大数字为10
var book={
title:"Professional Javascript",
author:[
"Nicholas C,Zakas"
],
edition:3, y
ear:2011
}
var jsonText=JSON.stringify(book,null,10)
console.log(jsonText)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200531085038628.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzcwOTg4,size_16,color_FFFFFF,t_70
2.2.3、toJSON()方法
有时候,JSONString不能满足对某些对象进行自定义序列化的需求,就可以使用toJSON方法,返回自生的JSON数据格式
var date=new Date();
console.log(date) c
onsole.log(date.toJSON())
console.log(date.toISOString())
var book={
title:"Professional Javascript",
author:[
"Nicholas C,Zakas"
],
edition:3,
year:2011,
toJSON:function(){
return this.title
}
}
var jsonText=JSON.stringify(book)
console.log(jsonText)
序列化顺序
- toJSON()
- 对第一步的结果使用函数过滤器
- 如果提供第三个参数,进行格式化
2.3、解析选项
JSON.parse()也可以接受另一个参数,该参数是一个函数,用于每个键值对儿的调用,称为还原函数
如果还原函数返回undefined,则表示要从结果中删除相应的值,如果返回其他值,则将该值插入到结果中
var book={
title:"Professional Javascript",
author:[
"Nicholas C,Zakas"
],
edition:3,
year:2011,
releaseDate:new Date(2011,11,1)
}
var jsonText=JSON.stringify(book)
var bookCody=JSON.parse(jsonText,function(key,value){
if(key=="releaseDate"){
return new Date(value)
}else{
return value
}
})
console.log(jsonText)