2014-03-05 52 views
5

我有簡單的JSON,我需要解析爲對象。奇怪的是,即使我將JSON字符串複製並粘貼到JSONLint(http://jsonlint.com/),它也不起作用,它將顯示它是有效的。JSON Lint說這是有效的,但JSON.parse拋出錯誤

var string = '{"token":"9eebcdc435686459c0e0faac854997f3","email":"201403050007950","id":"13","updated_at":"2014-03-05 10:34:51","messageguides":"[{\"name\":\"Un-named Messaging Guide 1\",\"pages\":[\"sustainabilitydirectors\",\"marketingnbusinessdevelopmentdirectors\"],\"date\":1394015692958}]"}'; 

var obj = JSON.parse(string); // Unexpected token n 

console.log(obj); 
+0

您的JSON內有JSON嗎? –

+1

我覺得你需要'雙逃脫'你的逃跑痕跡。所以'\\「名稱\\」'而不是'\「名稱\」'。 – Andy

+0

@dystroy yeah .. – sed

回答

11

當您分析的原始JSON數據的\字符都被視爲JSON轉義字符。

當您在JavaScript字符串中嵌入該JSON時,它們被視爲JavaScript轉義字符而不是JSON轉義字符。

當您將JSON表示爲JavaScript字符串時,您需要將它們轉義爲\\


這就是說,你通常更好只是丟棄JSON到JavaScript作爲一個對象(或陣列)文字,而不是在一個字符串中嵌入,然後解析它作爲一個單獨的步驟。

var obj = {"token":"9eebcdc435686459c0e0faac854997f3","email":"201403050007950","id":"13","updated_at":"2014-03-05 10:34:51","messageguides":"[{\"name\":\"Un-named Messaging Guide 1\",\"pages\":[\"sustainabilitydirectors\",\"marketingnbusinessdevelopmentdirectors\"],\"date\":1394015692958}]"}; 
相關問題