我有一个调试框架的一部分需要运行时评估对象。
具体来说,如果我有一个像这样的字符串 "{a: 1, b:2}"
,它需要将其评估为具有成员 a
和 b
以及相应值的对象。但是,如果我执行 eval("{a: 1, b:2}")
,它似乎将其评估为语句,并显示关于非法标签的内容。
我已经进行了一些修改,使其以以下方式进行评估:
eval("var x=" + str + "; x;");
这种方法似乎可行,但看起来像是一个可怕的hack。有没有更好的建议?
(顺便说一句,我知道eval的危险性,但这是调试框架的一部分,实际用户不会看到它。)
eval('(' + jsonString + ')')
中的开引号和括号? - Christian C. Salvadó