2011-07-25 84 views
1

可能重複:
Why the open quote and bracket for eval('(' + jsonString+ ')') when parsing json string歧義JavaScript的語法

按照Wikipedia entry on JSON,如果你想解析一個JSON對象與EVAL,說:

{ 
    "firstName": "John", 
    "lastName": "Smith", 
    "age": 25 
} 

您需要執行此操作:

var obj = eval("(" + JSON + ")"); 

如果沒有括號周圍的JSON文本換行,它會在JavaScript語法觸發歧義

我不太清楚這種含糊不清的情況,並希望得到一些意見。

+0

另一個重複:[爲什麼JavaScript的eval需要括號來評估JSON數據?](http://stackoverflow.com/questions/964397/why-does-javascripts-eval-need-parentheses-to-eval-json-數據/ 964437#964437) – Kobi

回答

0

我不知道我是否稱它爲「模糊」。 JSON只是一個javascript(真正的ECMAScript)對象字面量,所以它看起來像「{...}」。但是,在ECMAScript中,語句不能以大括號「{」字符開頭。

因此添加了一個分組操作符來表達「({...})」。這消除了語法錯誤,所以它可以傳遞給eval。另外,評估代碼意味着許多錯誤只會被吞噬,如果存在錯誤並且該字符串有任何實質性內容,則會發現調試非常困難。