对JSON的理解

JSON(JavaScript Object Notation)是JavaScript对象表示法,是一种轻量级的数据格式,并不是一种编程语言。它有两个API:JSON.stringify()和JSON.parse()。

一、语法

JSON的语法可以表示三种类型的值:简单值、对象、数组。JSON不支持变量、函数或对象实例,它就是一种表示结构化数据的格式,虽然与JavaScript中表示数据的某些语法相同,但它并不局限于JavaScript的范畴。

二、解析与序列化

JSON之所以流行,一是因为它拥有与JavaScript类似的语法,二是他可以把JSON数据结构解析为有用的JavaScript对象。

1、JSON对象:JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。

2、序列化选项:实际上,JSON.stringify()除了要序列化的JavaScript对象外,还可以接收另外两个参数,这两个参数用于指定以不同的方式序列化JavaScript对象。第一个参数是过滤器(参数可以是数组,也可以是函数),第二个参数是一个选项(表示是否在JSON字符串中保留缩进,缩进字符串最长不能超过10个字符)。JSON.stringify()无法满足自定义序列化需求的时候,可以给对象定义toJSON()方法,返回其自身的JSON数据格式。

假设把一个对象传入JSON.stringify(),序列化该对象的顺序如下:(理解这个顺序至关重要)

(1)如果存在toJSON()方法而且能通过它取得有效的值,则调用该方法。否则,返回对象本身。

(2)如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。

(3)对第(2)步返回的每个值进行相应的序列化。

(4)如果提供了第三个参数,执行相应的格式化。

3、解析选项:JSON.parse()方法也可以接收另外一个参数,该参数是一个函数,将在每个键值对儿上调用,这个函数被称为还原函数。还原函数与JSON.stringify()接收的替换(过滤)函数类似,都是接收两个参数,一个键和一个值,而且都需要返回一个值。

三、注意

1、JSON对象的属性必须加双引号,而不能是单引号;

2、JSON中不允许使用注释;

3、JSON中没有undefined这个值。

代码演示及详细介绍可参考JavaScript高级程序设计(第3版)第20章

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值