【发布时间】:2011-11-10 05:24:04
【问题描述】:
我有一些 JSON 编码的字符串,我需要轻松解析它们。任何想法如何做到这一点?我是 javaScript 的菜鸟,我自己做不到。我读到解析 json 真的很难。
请帮忙!
【问题讨论】:
标签: javascript json parsing
我有一些 JSON 编码的字符串,我需要轻松解析它们。任何想法如何做到这一点?我是 javaScript 的菜鸟,我自己做不到。我读到解析 json 真的很难。
请帮忙!
【问题讨论】:
标签: javascript json parsing
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)();。
尝试查看http://www.json.org/js.html。你需要这样的东西:
var myObject = JSON.parse(myJSONtext, reviver);
【讨论】:
JSON.parse() 在当今的大多数 Javascript 环境中都有定义。
【讨论】: