在JavaScript中解析JSON?

这个问题在这里已经有了答案:

  • 安全地将JSON字符串转换为对象22个答案

  • 大多数浏览器都支持JSON.parse() ,这是在ECMA-262第5版(JavaScript基于的规范)中定义的。 它的用法很简单:

    var json = '{"result":true,"count":1}',
        obj = JSON.parse(json);
    
    alert(obj.count);
    

    对于那些不能使用json2.js实现的浏览器。

    正如评论中指出的那样,如果您已经在使用jQuery,则会有一个$.parseJSON函数映射到JSON.parse如果可用)或者在较旧的浏览器中使用一种eval形式。 但是,这会执行额外的不必要的检查,这些检查也是由JSON.parse执行的,所以为了获得最佳的全面性能,我建议使用它,如下所示:

    var json = '{"result":true,"count":1}',
        obj = JSON && JSON.parse(json) || $.parseJSON(json);
    

    这将确保您立即使用本机JSON.parse ,而不是让jQuery在将字符串传递给本机解析函数之前对其进行完整性检查。


    首先,你必须确保JSON代码是有效的。

    之后,如果可以,我会推荐使用JavaScript库(如jQuery或Prototype),因为这些东西在这些库中处理得很好。

    另一方面,如果您不想使用库并且可以保证JSON对象的有效性,那么我只需将该字符串包装在匿名函数中并使用eval函数即可。

    如果您从另一个不是完全可信的源获取JSON对象,则不推荐这样做,因为如果愿意,eval函数允许使用叛离代码。

    这是一个使用eval函数的例子:

    var strJSON = '{"result":true,"count":1}';
    var objJSON = eval("(function(){return " + strJSON + ";})()");
    alert(objJSON.result);
    alert(objJSON.count);
    

    如果您控制正在使用的浏览器,或者您不担心使用旧版浏览器的人,则始终可以使用JSON.parse方法。

    这真的是未来的理想解决方案。


    如果您从外部网站获取此信息,使用jQuery的getJSON可能会有所帮助。 如果它是一个列表,您可以使用$ .each遍历它

    $.getJSON(url, function (json) {
        alert(json.result);
        $.each(json.list, function (i, fb) {
            alert(fb.result);
        });
    });
    
    链接地址: http://www.djcxy.com/p/48375.html

    上一篇: Parse JSON in JavaScript?

    下一篇: Continuously render numpy arrays in loop