JSON对象与JSON字符串相互转换的几种方法

实现  JSON 字符串与  JSON 对象相互转换的方式有很多,下面分别进行介绍。

一、JSON字符串转化为JSON对象

假设我们有如下  JSON 字符串需要转换为  JSON 对象。
1
var  jsonStr =  '[{"CityId":18,"CityName":"西安"},{"CityId":53,"CityName":"广州"}]' ;

1,使用eval()函数进行转换

  • 使用 eval() 转换时需要在 json 字符外包裹一对小括号。
  • ie8(兼容模式)、ie7ie6 不要使用此方法。
1
2
var  jsonObj = eval( '('  + jsonStr +  ')' );
alert(jsonObj[0][ "CityName" ]);
原文:JS - JSON对象与JSON字符串相互转换的几种方法

2,使用JSON.parse()方法进行转换

  • ie8(兼容模式)、ie7ie6 不要使用此方法。
1
var  jsonObj =  JSON .parse(jsonStr);


3,使用json2.js进行转换

json2.js  提供了  json  的序列化和反序列化方法,完美支持各个浏览器。
使用时我们首先要将  json2.js  引用进来,源码地址: https://github.com/douglascrockford/JSON-js
1
var  jsonObj = JSON.parse(jsonStr);

4,使用jQuery进行转换

如果我们项目中有使用  jQuery ,那么直接使用  $.parseJSON()  方法即可,而且可以确保各个浏览器的兼容性。
1
var  jsonObj = $.parseJSON(jsonStr);

二、JSON对象转化为JSON字符串

假设我们有如下的对象:
1
2
3
4
var  jsonObj = {
     "CityId" : "18" ,
     "CityName" : "西安2"
};

1,使用JSON.stringify()方法进行转换

该方法不支持较老版本的 IE 浏览器,比如: ie8 (兼容模式)、 ie7 ie6
1
2
var  jsonStr = JSON.stringify(jsonObj);
alert(jsonStr);
运行结果如下:
原文:JS - JSON对象与JSON字符串相互转换的几种方法


2,使用json2.js进行转换

如果想要兼容早期版本的 IE浏览器,比如: ie8(兼容模式)、 ie7ie6。可以下载使用  json2.js,具体地址参考前面内容。使用方式和上面一样。
1
var  jsonStr = JSON.stringify(jsonObj);

3,使用jQuery进行转换

首先对  jQuery 进行扩展,增加个  json 对象转字符串的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
jQuery.extend({
     stringify  :  function  stringify(obj) {
         var  t =  typeof  (obj);
         if  (t !=  "object"  || obj ===  null ) {
             // simple data type
             if  (t ==  "string" ) obj =  '"'  + obj +  '"' ;
             return  String(obj);
         else  {
             // recurse array or object
             var  n, v, json = [], arr = (obj && obj.constructor == Array);
 
             for  (n  in  obj) {
                 v = obj[n];
                 t =  typeof (v);
                 if  (obj.hasOwnProperty(n)) {
                     if  (t ==  "string" ) v =  '"'  + v +  '"' ;
                     else  if  (t ==  "object"  && v !==  null ) v = jQuery.stringify(v);
                     json.push((arr ?  ""  '"'  + n +  '":' ) + String(v));
                 }
             }
             return  (arr ?  "["  "{" ) + String(json) + (arr ?  "]"  "}" );
         }
     }
});
使用方式如下:
1
var  jsonStr = $.stringify(jsonObj);
原文出自: www.hangge.com   转载请保留原文链接: http://www.hangge.com/blog/cache/detail_1534.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值