JSON知识点的总结(JavaScript)
1.关于JSON:
首先JSON,最重要的是要理解它是一种数据格式,并不是一种编程语言。虽然具有相同的语法结构,但JSON并不从属于JavaScript。而且,并不是只有JavaScript才是用JSON,毕竟JSON只是一种数据格式,很多编程语言都有针对JSON的解析器和序列化器。
2.JSON的语法:
JSON语法可以表示三种类型的值:
①.简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串,数值,布尔值和null。但JSON不支持JavaScript中的特殊值undefined。
②.对象:对象作为一种复杂数据类型,表示的是一组无需的键值对儿,而每个键值对中的值,可以是简单值,也可以是复杂数据类型的值。这里需要说明的两点是:对象的属性必须加双引号,这在JSON中是必需的。
③.数组:数组也是一种复杂类型的值,表示一组有序的值的列表。可以通过数值索引类访问其中的值。数组的值也可以是任意类型,简单值,对象或者数组。
3.JSON的解析和序列化
早期的JSON解析器基本上就是使用JavaScript的eval()函数,由于JSON是JavaScript语法的子集,因此eval函数可以解析,解释并返回JavaScript对象和数组。但是使用eval对JSON数据结构求值存在风险。因为可能会执行一些恶意代码。
这里主要用到的是JSON对象的两个方法:stringify和parse。这两个方法分别可以用于把:
stringify:JavaScript对象序列化为JSON字符串。
parse:把JSON字符串解析为原生的JavaScript。
4.序列化选项:
实际上,JSON.stringify除了要序列化JavaScript对象外,还可以接受两个参数。这两个参数分别用于指定以不同的方式序列化JavaScript对象。第一个是过滤器,可以是一个数组,也可以是一个函数。第二个参数是一个选项,用于表示JSON字符串中保留缩进。单独或者组合使用这两个参数,可以更加深入的控制JSON的序列化。如下:我们对数据字段进行了过滤。一个数数组,一个是函数
函数作为过滤器时候,返回undefined意味着要跳过某个属性。
接下来我们说说第三个参数,就是控制结果中的缩进和空白符:最大缩进为10,所有大于10的也会自动转换为10.
使用其他字符:
5.JSON.parse:
JSON的这个方法也可以接受另一个参数,用于还原,称为还原函数吧。如果还原函数返回undefined,则表示要从结果中删除对应的键,如果返回的是其他值,则将该值插入到结果中。代码如下:
6.小结:
JSON作为一种轻量级的数据格式,可以简化表示复杂数据结构的工作量。JSON使用JavaScript语法的子集表示对象,数组,字符串,布尔值和null。即使XML也能表示同样复杂的数据结果,但是JSON没有那么繁琐,而且在JavaScript中使用更便捷。
其实最主要的就是掌握JSON对象的两个方法,通过他们可以实现数据的转换。