Js中JSON字符串和对象互转的方法总结

JSON是一种便于操作使用的轻量级数据交换格式。易于人阅读和编写。同时也

易于机器解析和生成。

很多时候我们需要将JSON格式的字符串转化为JSON对象或者将JSON对象转为JSON字符串。特别是在AJAX应用中经常需要将JSON格式的字符串返回到前端,前端解析成js对象(JSON )。

现将工作中接触到的一些方法总结如下:。

一.   将JSON字符串转化为JSON对象

  1. eval方式解析。各个版本的浏览器都支持,也是以前最早使用的方式了,而且性能也不错。使用方法为:eval('('+sJSON+')') ;注意:在字符串两端再加上括号,否则会出错。有时从数据库读出来的数据带有空格,使 eval 失效。这时只要将字符串中的空格去掉即可result.replace(/\s/ig, ' '); 
  2. new Function方式。各个版本的浏览器也都支持,看起来比较怪异。使用方法为:var json = (new Function("return " + sJSON))();
  3. 浏览器内置的JSON对象提供的方法。性能非常不错,不过只有IE8/Firefox3.5+/Chrome4/Safari4/Opera10 及以后版本内置了该方法。用法为:JSON.parse(str); ie8(兼容模式),ie7和ie6虽然没有此内置的JSON对象,不过你可以从https://github.com/douglascrockford/JSON-js上获取json2.js文件使得ie6,ie7可以使用JSON对象中的parse()方法。注意:使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,否则为报错,前两种方式则没有此问题。
  4. JQuery中的parseJSON方法。jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON( json ),接受一个标准格式(属性加上双引号“”)的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。注意在JQuery中有些ajax的函数已经将服务器传过来的数据转化为了JSON对象了,比如$.getJSON("http://www.xxxxx/",{param:"xxx"},function(data){
    //此处返回的data已经是json对象 });$.ajax()中dataType如果指定为json的话则也已经转化为JSON对象了。

在性能方面的比较可以看http://weblogs.asp.net/yuanjian/archive/2009/03/22/json-performance-comparison-of-eval-new-function-and-json.aspx

结论是:

在IE6,7中选择使用eval(choose eval in IE6, 7)。

在IE8中选择使用内置的JSON对象(choose native JSON in IE8)。 

在火狐2,3中使用new  Function(choose new Function in Firefox2, 3).

在Safari4中选择使用eval(choose eval in Safari4)。

使用其他的浏览器则eval和new Function两者性能差不多。

         简而言之:能用内置的JSON对象则使用JSON对象,否则的话只在火狐中使用new Function,其他都使用eval即可。

二.   将JSON对象转化为JSON字符串

  1. 浏览器内置的JSON对象提供的方法。同理只有IE8/Firefox3.5+/Chrome4/Safari4/Opera10 及以后版本内置了该方法。用法为:JSON. stringify (json); ie8(兼容模式),ie7和ie6虽然没有此内置的JSON对象,不过你可以从https://github.com/douglascrockford/JSON-js上获取json2.js文件使得ie6,ie7可以使用JSON对象中的stringify()方法。

 

转载于:https://www.cnblogs.com/sunshinetian/archive/2012/05/19/2509270.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值