Javascript处理JSON数据格式

被刻印的时光 ゝ 提交于 2020-02-18 13:44:13

一、语法

JSON语法可以表示为以下三种类型:

1、简单值:使用与javascript相同的语法,可以在JSON中表示字符串("hello")、数值(5)、布尔值和null。但是不支持undefined。

2、对象:对象作为一种复杂的数据类型,表示的是一组无序的键值对。每个键值对的值可以是简单值,也可以是复杂数据类型的值。如:{"name": "jim", "age": 12}

3、数组:数组也是一种复杂的数据类型,表示一种有序的值的列表,可以通过索引访问其中的值。数组的值也可以是任意类型。

JSON不支持变量和函数。javascript字符串和JSON字符串最大的区别在于JSON字符串必须使用双引号,且JSON中的对象要求给属性加引号。

 

二、解析与序列化

JSON数据结构可以解析为javascript对象,XML数据结构解析为DOM对象。

JSON对象有两个方法:stringify()和parse(),这两个方法用于把javascript对象序列化为JSON字符串和把JSON字符串解析为javascript对象。例如:

 

三、stringify()和parse()

1、stringify()方法除了序列化对象之外,还可以接收两个参数,用于指定以不同的方式序列化对象。第一个参数是一个过滤器,可以为数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。

1.1 数组

如果过滤器为数组,那么stringify()的结果只包含数组列出的属性,如:

返回的字符串为:

{"title": "profession", "edition": 3}

1.2 函数

如果过滤器为函数,传入的函数接收两个参数,属性名和属性值,函数返回的值为相应的键值,如果返回的是undefined,那么该属性会被忽略,如:

返回的结果:

{"title": "profession", "authors": "jim,tom","year": 5000}

 

2、parse()方法可以接收一个参数,该参数是一个函数,为了区别于stringify()的过滤函数,这个函数被称为还原函数,但实际上作用相同。如果还原函数返回undefined,那么表示结果中删除相应的键,如:

还原函数使得生成的javascript对象的releasedate属性的值为当前时间。

 

四、小结

JSON是一种轻量级的数据格式,可以简化表示复杂数据结构的工作量。JSON使用javascript语法的子集表示对象、数组、字符串、数值、布尔值和null。使用eval()对JSON数据结构求值存在风险,因为可能会执行一些恶意代码,因此解析JSON字符串时不建议使用eval()函数。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!