如何轻松解析JSON?

7
我有一些JSON编码的字符串,需要轻松解析。你有什么好的想法吗?我是JavaScript新手,自己无法完成。我了解到解析JSON很难。
请帮帮我!

可能是在jQuery中序列化为JSON的重复问题。 - outis
3个回答

11

JSON是有效的JavaScript代码,因此您可以使用eval()函数对其进行求值:

var data = eval(json);

然而,当可用时,使用JSON.parse()[文档]更加安全:

var data = JSON.parse(json);

那么你可以这样做:

if (window.JSON) {
    data = JSON.parse(json);
} else {
    data = eval('('+json+')');
}
注意在eval()中使用括号。请参考@CMS的评论和这里
你也可以使用现有的库,比如这个库(在没有JSON.parse的浏览器中添加了该方法)。
如果你正在使用jQuery,请使用$.parseJSON()[docs]

你也可以使用 data = ((window.JSON&&JSON.parse)||eval)(json);,这样会更加简洁。 - icktoofay
1
如果json字符串表示一个对象(例如 '{“foo”:“bar”}'),则 eval(json) 将无法工作,因为第一个大括号将被解释为语句块的开头,而不是对象字面量的开头,您应该这样做:eval('('+json+')'); 强制将评估转换为表达式上下文。 也请参阅 另外,另一种选择是使用 Function 构造函数,我认为这更好,因为 eval 使引擎优化变得更加困难,例如:Function('return '+json)();. - Christian C. Salvadó

3

JSON.parse() 在大多数JavaScript环境中已经定义。

它是用来解析JSON字符串并将其转换为对象的功能。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接