JSON.parse

现代浏览器提供的JSON.parse(JQ使用)

    if ( datatype === "json" || !datatype && rhd.indexOf("json") >= 0 ) {
    data = anyjs.trim( data );
    //use the native JSON parser first
    return window.JSON && window.JSON.parse ?window.JSON.parse(data):(new Function("return " + data))();
    }

初学JSON,按照官方说明,在json2.js中有parse和stringify两个方法,parse用于从一个字符串中解析出json对象。还是举个例子说明:

var str = " {'name':'x', 'age':23} " ;
 JSON.parse(str);

原来认为这肯定能够正确执行的,但是无论怎样写这个对象string,都抛出异常。后来发现原来是 " 和 ' 导致的错误。如果改为:

1    var str = ' { " name " : " xskow " , " age " : 23 } ';
 JSON.parse(str);

就OK了!
还有就是我们写对象的时候一般可以{name:'xskow'},即属性名可以不用双引号括起来,但如果使用JSON.parse的话,每个属性都必须用双引号括起来,否则也会抛出异常。

stringify方法就是和parse功能相反,但是一般对自定义对象也没有异常产生,这里就不说了



比如,如下的代码:

function handle_success(response){ var json = eval(response); // response = "{'foo' : 'bar'}"; }

浏览器会报,invalid label错, 这是因为, eval会尝试将你的response解释为一个label, 当你在脚本中直接写:

<script> {'foo' : 'bar'};</script>

会报错的原理是一样的.

解决办法有俩个:

var json = eval('(' + response + ')'); // response = "{'foo' : 'bar'}";

或者

eval('var json = ' + response); // response = "{'foo' : 'bar'}"; //json is available now
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值