关联数组不适用于eval()JavaScript

ram*_*daz 2 javascript python jquery json

我正在生成一个表示为Python字典的数据,该字典使用simplejson通过url转储,格式为此格式.

{"2": "London", "3": "Tokyo", "4": "Sydney"}
Run Code Online (Sandbox Code Playgroud)

我正在使用$.get并存储到可变数据中.但是eval(data)不会生成关联数组.实际上会抛出一个错误.问题是什么?解决办法是什么?

编辑:我已经共享了代码 http://dpaste.com/570901/

Dav*_*nco 6

我们需要看到更多的代码...

var x = '{"2": "London", "3": "Tokyo", "4": "Sydney"}';

eval('var y = ' + x);
      // or
var y = eval('(' + x + ')');

console.log(y);
console.log(y["2"]);
Run Code Online (Sandbox Code Playgroud)

以上工作得很好。你到底在做什么/不做什么?

PS:eval无论如何你都不应该使用它,但重要的是要知道它是如何工作的。


hug*_*omg 6

您的错误是因为a {语句的开头被读取为代码块(就像您在ifs和fors中使用的类型)而不是对象文字.您可以根据需要为eval添加括号:

eval('(' + str + ')');
Run Code Online (Sandbox Code Playgroud)

当然,eval是邪恶的,你应该使用类似的东西JSON.parse.大多数新浏览器都有这个,它不仅更安全,而且速度更快.

  • `eval`不是邪恶的.`eval`没有道德指南针,实际上并不是有感知的. (2认同)
  • 这只是它想要你思考的东西.在我们说话的时候,Eval可能正在策划人类的毁灭! (2认同)