面试知识点总结 - js JSON

概念

  1. JSON(JavaScript Object Notation):JavaScript对象表示法,是一种数据格式

语法

  1. 简单值:可以表示的包括String、Number、Boolean、Null,语法和js相同;不支持Undefined
  2. 对象:一组无序的键值对;每个键值对中的值可以为简单值和复杂数据类型的值
  3. 数组:一组有序的值的列表;数组的值可以为任意类型(简单值、对象、数组),可以统统数组的索引来访问其中的值

注意事项

  1. 不能表示undefined
  2. 字符串必须用双引号
  3. 属性名必须加双引号
  4. 对象和数组的最后一项后面不能有逗号
  5. 没有结尾分号
  6. 不支持变量、函数、对象实例,所以数据前面没有变量声明var obj = {},直接就是{}

JSON方法

  1. JSON.stringify(要序列化的JavaScript对象,数组或函数形式的过滤器,缩进):把JavaScript对象序列化为JSON字符串
  1. 返回的JSON字符串不包含任何空格字符或缩进
  2. 序列化时会忽略原型、函数、undefined,最终的值都是有效的JSON数据类型
  3. 第二个参数:
  1. 为数组时,结果中将只包含数组中列出的属性
  2. 为函数时,JavaScript的每一项都调用该函数,函数接收两个参数为属性名和属性值
  3. 当第二个参数不传时,可以写成null,然后写第三个参数
  1. 第三个参数:
  1. 用于控制结果中的缩进和空白符
  2. 为数值时,表示每个级别缩进的空格数
  3. 为字符串时,用该字符串替换空格作为缩进
  4. 只要有缩进,结果中就会自动包含换行符
  1. 可以给JavaScript对象自定义toJSON()方法,该方法可以作为过滤器的补充
  2. 序列化对象的顺序:
  1. 如果存在toJSON()方法而且能返回有效的值,则调用该方法。否则,返回对象本身
  2. 如果提供了第二个参数,应用这个函数过滤器。输出函数过滤器的值为第一步中返回的值
  3. 对第二步返回的每个值进行相应的序列化
  4. 如果提供了第三个参数,执行相应的格式化
  1. JSON.parse(JSON字符串,还原函数):把JSON字符串解析为JavaScript对象
  1. 解析的JSON字符串不是有效的类型,会报错
  2. 第二个参数为还原函数:在每个键值对上调用,函数接收两个参数,分别为属性名和属性值;如果函数返回undefined,则从结果中删除相应的项,如果返回其他值,则将该值插入到结果中
  3. 例子:
let book = {
	bookName:'book1',
	publishDate:new Date(2020,01,01)
}
let jsonBook = JSON.stringify(book)	//会忽略原型,所以再转为JavaScript对象后,Date原型上的方法都不能使用了
console.log(jsonBook)
let jsonObj = JSON.parse(jsonBook,function(key,value){
	if(key === 'publishDate'){
		return new Date(value)
	}else{
		return value
	}
})
console.log(jsonObj)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值