Eval()=意外的令牌:错误

时间:2011-11-02 18:27:29

标签: javascript json eval

我尝试了这个简单的JavaScript代码:

eval('{"Topics":["toto","tata","titi"]}')

例如,在Chrome控制台中,会返回

  

SyntaxError:意外的令牌:

我在JSONLint上尝试了JSON并且它有效。

你看到了这个错误吗?

8 个答案:

答案 0 :(得分:30)

你必须这样写

eval('('+stingJson+')' );

将字符串转换为Object

希望我能帮忙!

答案 1 :(得分:25)

因为eval 强制表达式上下文,并且提供的字符串是无效的 JavaScript程序,因此前三个令牌(以及它们的外观如何at)是:

{            // <-- beginning of a block, and NOT an Object literal
"Topics"     // <-- string value, okay (note this is NOT a label)
:            // <-- huh? expecting ";" or "}" or an operator, etc.

快乐的编码。

答案 2 :(得分:9)

第一:不要使用eval。

第二名。只使用eval来制作东西,并进行评估。例如:

eval('var topics = {"Topics":["toto","tata","titi"]}');

答案 3 :(得分:8)

FWIW,请改用JSON.parse。比eval更安全。

答案 4 :(得分:4)

因为那是在评估一个对象。 eval()要求你传入语法上有效的javascript,而你所做的只是传入一个裸对象。电话应该更像是:

eval('var x = {"Topics":etc...}');

答案 5 :(得分:4)

使用:

function evalJson(jsArray){ eval("function x(){ return "+ jsArray +"; }"); return x(); }

var yourJson =evalJson('{"Topics":["toto","tata","titi"]}');

console.log(yourJson.Topics[1]); // print 'tata''

答案 6 :(得分:0)

如果您使用的是JQuery,请使用函数$.parseJSON(),为我工作,遇到同样的问题

答案 7 :(得分:0)

如果要使用以下代码创建数组

var jsonObject = eval('(' +"["+ response + "]"+')');