2015-07-28 89 views
0

在我angularjs應用我收到來自API這個JSON - :在Object.parse(原生)意外令牌'Angularjs:無法解析JSON用單引號

[ 
    { 
    'Foo': 'bar' 
    } 
] 

不幸的SyntaxError

有沒有什麼辦法可以在不改變API的情況下修復這個客戶端?

回答

4

這不是JSON。這是類似JSON的,但JSON requires字符串和屬性鍵是雙引號,而不是單引號。

所以答案是:糾正API。如果你不控制它,告訴控制它的人是錯的。

如果你絕對需要支持那個破壞的響應,你可以看看修改Crockford的一個JSON parsers,使它支持單引號的鍵和字符串,這應該不是很難。或者你可以使用PEG.js來生成你自己的解析器(可能從他們的JavaScript解析器開始),但這會更有效。

你會得到別人告訴你,你可以分析與eval,這是真的,你可以:

// LAST RESORT 
var data = eval("(" + response + ")"); 

...但是請注意,eval將在響應運行的任意代碼,它不僅僅解析數據結構。所以你必須完全信任API不發回惡意的東西,跟蹤你的用戶的東西等。