Eval() = Unexpected token : error
我尝试了这个简单的JavaScript代码:
1 | eval('{"Topics":["toto","tata","titi"]}') |
例如,在Chrome控制台中,会返回
SyntaxError: Unexpected token :
我在JSONLint上尝试了JSON,它是有效的。
你看到了这个bug吗?
你必须这样写
1 | eval('('+stingJson+')' ); |
将字符串转换为Object
希望我帮忙!
因为
1 2 3 | { // <-- 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. |
快乐的编码。
FWIW,改为使用
第一:不要使用eval。
第二。 只使用eval来制作东西,并进行评估。 例如:
1 | eval('var topics = {"Topics":["toto","tata","titi"]}'); |
采用:
1 2 3 4 5 | function evalJson(jsArray){ eval("function x(){ return"+ jsArray +"; }"); return x(); } var yourJson =evalJson('{"Topics":["toto","tata","titi"]}'); console.log(yourJson.Topics[1]); // print 'tata'' |
因为那是在评估一个对象。 eval()要求你传入语法上有效的javascript,而你所做的只是传入一个裸对象。 电话应该更像是:
1 | eval('var x = {"Topics":etc...}'); |
如果您使用的是JQuery,那么为我工作的函数