我有一个格式为..的
的JSON响应{"item":{"cid":544,"id":3023,"name":"names"},"success":1,"msg":""}
响应存储为s
。我什么时候......
var obj = eval('('+s+')');
obj = undefined.
因此obj.name = undefined
我想从此JSON响应中获取id
和name
。我为什么不工作?我如何“让它成功”?
答案 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)
答案 2 :(得分:0)
使用标准方法解析JSON并使用适当的库来填补旧浏览器中的空白,例如https://github.com/douglascrockford/JSON-js
下载json.js,并使用<script>
标记向您的网页添加对它的引用。如果您的浏览器尚未提供,则脚本将自动提供所需的JSON方法。
var object = JSON.parse(yourJSONString);
不建议使用Eval,你甚至可以禁止它使用它来解析JSON。原因很简单,字符串中的任何Javascript都将被评估,并允许代码注入。任何语言的eval
都是危险的,如果输入有可能是不安全的话,肯定不会被使用。