如何轻松解析 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?的主要内容,如果未能解决你的问题,请参考以下文章