如何轻松解析 JSON?

Posted

技术标签:

【中文标题】如何轻松解析 JSON?【英文标题】:How to parse JSON easily? 【发布时间】:2011-11-10 05:24:04 【问题描述】:

我有一些 JSON 编码的字符串,我需要轻松解析它们。任何想法如何做到这一点?我是 javascript 的菜鸟,我自己做不到。我读到解析 json 真的很难。

请帮忙!

【问题讨论】:

Serializing to JSON in jQuery 的可能重复项 【参考方案1】:

JSON 是有效的 Javascript,所以你可以 eval() 它:

var data = eval(json);

不过使用JSON.parse()[docs] 会更安全,如果此功能可用:

var data = JSON.parse(json);

所以你可以这样做:

if (window.JSON) 
    data = JSON.parse(json);
 else 
    data = eval('('+json+')');

注意 eval() 中括号的使用。请参阅@CMS 的评论和this。

您还可以使用现有的库,例如 this one(在没有它的浏览器上添加 JSON.parse)。

如果您使用的是 jQuery,请使用 $.parseJSON()[docs]

【讨论】:

你也可以使用data = ((window.JSON&&JSON.parse)||eval)(json);,更简洁一些。 eval(json) 如果 json 字符串表示一个对象(例如 '"foo":"bar"')将不起作用,因为第一个花括号将被解释为语句 block 的开头,而不是对象字面量的开头,您应该这样做:eval('('+json+')'); 以强制将评估放入 表达式上下文。 See also。无论如何,另一种选择是使用Function 构造函数,IMO 更好,因为eval 使引擎优化更加困难,例如:Function('return '+json)();【参考方案2】:

尝试查看http://www.json.org/js.html。你需要这样的东西:

var myObject = JSON.parse(myJSONtext, reviver);

【讨论】:

【参考方案3】:

JSON.parse() 在当今的大多数 Javascript 环境中都有定义。

【讨论】:

以上是关于如何轻松解析 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

轻松解析JSON数据,欢迎使用Jsoneasy.com!

轻松应对多层JSON数据计算与入库

如何轻松地同时使用 Ajax、perl 和 JSON?

jshn - 如何解析 json 包

如何轻松地将json文件的某些方面加载到rdd

PHP 如何轻松访问PHP中的JSON(如具有多个字段的JSON记录集)