解析JSON响应问题

时间:2011-03-03 16:16:24

标签: javascript json

我有一个格式为..的

的JSON响应
{"item":{"cid":544,"id":3023,"name":"names"},"success":1,"msg":""}

响应存储为s。我什么时候......

var obj = eval('('+s+')');

obj = undefined.因此obj.name = undefined

我想从此JSON响应中获取idname。我为什么不工作?我如何“让它成功”?

3 个答案:

答案 0 :(得分:4)

不建议使用eval(安全性明智),使用JSON解析器:

var obj = JSON.parse(result);

或者确保即使浏览器没有JSON解析器也能正常工作:

var obj = typeof JSON !='undefined' ?  JSON.parse(result) : eval('('+result+')');

但是不推荐这样做,在这种情况下,您应该更喜欢按照此答案评论中的建议添加备用JSON库(请参阅json.org)。

然后你可以这样做:

var id = obj.item.cid;
var name = obj.item.name;

答案 1 :(得分:0)

评估整个作业。

var obj;
eval('obj = ('+s+')');
console.log(obj.item.name);

或者改为使用json2

答案 2 :(得分:0)

使用标准方法解析JSON并使用适当的库来填补旧浏览器中的空白,例如https://github.com/douglascrockford/JSON-js

下载json.js,并使用<script>标记向您的网页添加对它的引用。如果您的浏览器尚未提供,则脚本将自动提供所需的JSON方法。

var object = JSON.parse(yourJSONString);

不建议使用Eval,你甚至可以禁止它使用它来解析JSON。原因很简单,字符串中的任何Javascript都将被评估,并允许代码注入。任何语言的eval都是危险的,如果输入有可能是不安全的话,肯定不会被使用。