js中JSON转换

JSON.parse()

JSON.stringify()

用法地址:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

JSON和XML类型,都是一种结构化的数据表示方式。JSON并不是JavaScript独有的数据格式,其他很多语言都可以对JSON进行解析和序列化。

JSON的语法可以表示三种类型的值:

①简单值:可以在JSON中表示字符串、数值、布尔值和null。但JSON不支持JavaScript中的特殊值undefined。

100、“jims”这两个都是JSON的表示方法,一个是JSON的数值,一个是JSON字符串。布尔值和null也是有效的形式。但在实际运用中要结合对象或数组。

②对象:

JavaScript中对象字面量表示法:

var box = {

name:'jims',

age:20

};

而JSON中的对象表示法需要加上双引号,并且不存在赋值运算和分号:

140938_Sg8O_1054538.png

③数组:

JavaScript中数组字面量表示法:

140951_TkR3_1054538.png

而JSON中的数组表示法同样没有变量赋值和分号:

141005_MFP4_1054538.png

一般常用的一种复杂形式是数组结合对象的形式:

141016_0rma_1054538.png

一般情况下,我们可以把JSON结构数据保存到一个文本文件里,然后通过XMLHttpRequest对象去加载它,得到这串结构数据字符串。

二、解析和序列化

如果载入的JSON文件,需要对其进行使用,那么就必须对JSON字符串进行解析成原生的JavaScript值。原生的JavaScript对象或数组,也可以转换成JSON字符串。

对于将JSON字符串解析为JavaScript原生值,早起采用的是eval()函数。这种做法既不安全,也可能会执行一些恶意代码:

JSON字符串:

var jsonStr = '{"name":"caibaojian", "password":"1111"}';

JSON对象:

var jsonObj = {"name":"caibaojian.com", "password":"1111"};

141031_0fbQ_1054538.png

ECMAScript5对解析JSON的行为进行了规范,定义了全局对象JSON。该对象提供了两个方法:一个是原生JavaScript值转换为JSON字符串:stringify();另一个是将JSON字符串转换为JavaScript原生值:parse()。

141043_LgVv_1054538.png

在序列化JSON的过程中,stringify()方法还提供了第二个参数。第二个参数可以是一个数组,也可以是一个函数,用于过滤结果。第三个参数则表示是否在JSON字符串中保留缩进。

141057_0T7l_1054538.png

如果不需要缩进,第三个参数可以不填写;如果不需要过滤结果,但又要保留缩进,则将过滤结果的参数设置为null。如采用函数,可以进行复杂的过滤。

141106_UxMv_1054538.png

还有一种方法可以自定义过滤一些数据,使用toJSON()方法,可以将某一组对象里指定返回某个值。

20142944_DMbv.jpg

可以看到序列化也有执行顺序,首先去执行toJSON()方法;如果应用了第二个过滤参数,则执行这个方法;然后执行序列化过程,比如将键值对组合成合法的JSON字符串,比如加上双引号。如果提供了缩进,再执行缩进操作。

解析JSON字符串方法parse()也可以接受第二个参数,这样可以在还原出JavaScript值的时候替换成自己想要的值。

20142944_zGzc.jpg

 

转载于:https://my.oschina.net/u/1054538/blog/1576071

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值