概念
JSON(JavaScript Object Notation):JavaScript对象表示法,是一种数据格式
语法
简单值:可以表示的包括String、Number、Boolean、Null,语法和js相同;不支持Undefined 对象:一组无序的键值对;每个键值对中的值可以为简单值和复杂数据类型的值 数组:一组有序的值的列表;数组的值可以为任意类型(简单值、对象、数组),可以统统数组的索引来访问其中的值
注意事项
不能表示undefined 字符串必须用双引号 属性名必须加双引号 对象和数组的最后一项后面不能有逗号 没有结尾分号 不支持变量、函数、对象实例,所以数据前面没有变量声明var obj = {},直接就是{}
JSON方法
JSON.stringify(要序列化的JavaScript对象,数组或函数形式的过滤器,缩进):把JavaScript对象序列化为JSON字符串
返回的JSON字符串不包含任何空格字符或缩进 序列化时会忽略原型、函数、undefined,最终的值都是有效的JSON数据类型 第二个参数:
为数组时,结果中将只包含数组中列出的属性 为函数时,JavaScript的每一项都调用该函数,函数接收两个参数为属性名和属性值 当第二个参数不传时,可以写成null,然后写第三个参数
第三个参数:
用于控制结果中的缩进和空白符 为数值时,表示每个级别缩进的空格数 为字符串时,用该字符串替换空格作为缩进 只要有缩进,结果中就会自动包含换行符
可以给JavaScript对象自定义toJSON()方法,该方法可以作为过滤器的补充 序列化对象的顺序:
如果存在toJSON()方法而且能返回有效的值,则调用该方法。否则,返回对象本身 如果提供了第二个参数,应用这个函数过滤器。输出函数过滤器的值为第一步中返回的值 对第二步返回的每个值进行相应的序列化 如果提供了第三个参数,执行相应的格式化
JSON.parse(JSON字符串,还原函数):把JSON字符串解析为JavaScript对象
解析的JSON字符串不是有效的类型,会报错 第二个参数为还原函数:在每个键值对上调用,函数接收两个参数,分别为属性名和属性值;如果函数返回undefined,则从结果中删除相应的项,如果返回其他值,则将该值插入到结果中 例子:
let book = {
bookName: 'book1' ,
publishDate: new Date ( 2020 , 01 , 01 )
}
let jsonBook = JSON . stringify ( book)
console. log ( jsonBook)
let jsonObj = JSON . parse ( jsonBook, function ( key, value) {
if ( key === 'publishDate' ) {
return new Date ( value)
} else {
return value
}
} )
console. log ( jsonObj)