可能重复:
Why the open quote and bracket for eval('(' + jsonString+ ')') when parsing json string
根据Wikipedia entry on JSON,如果您想用 eval 解析JSON对象,请说:
{
"firstName": "John",
"lastName": "Smith",
"age": 25
}
您需要通过以下方式完成:
var obj = eval("(" + JSON + ")");
如果没有括号环绕JSON文本,它将在JavaScript的语法中触发 歧义 。
我不太确定这种歧义是什么,并且会欣赏一些意见。
答案 0 :(得分:0)
我不知道我是否称之为“含糊不清”。 JSON只是一个javascript(真正的ECMAScript)对象文字,所以它看起来像“{...}”。但是,在ECMAScript中,语句不能以大括号“{”字符开头。
因此添加了分组运算符以使表达式为“({...})”。这会删除语法错误,因此可以将其传递给eval。
此外,eval'ing代码意味着许多错误只是被吞下,如果有错误并且字符串是实质性的,你会发现它很难调试。