2015-08-21 37 views
8

Javascript無法讀取此json字符串,因爲它包含單引號字符,它將其視爲字符串的結尾。json值內的單引號

如何避免單引號使其不被視爲字符串的結尾?

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It's a test!"}}'; 

var parsed = JSON.parse(json); 
+1

你爲什麼寫出一個序列化爲JSON的對象,然後在下一行解碼它?只需編寫一個對象文字。沒有必要把你的對象放在一個字符串中。 – Fuser97381

+0

有趣的是,當有人問一個簡單的問題,在同一分鐘內如何有相當的答案洪水。這肯定是重複的。 – Fuser97381

+1

這與JSON無關。問題在於,您在用單引號分隔的JavaScript字符串文本中有單引號。字符串包含JSON的事實就在這一點上。 (爲什麼要編寫JSON的靜態字符串,然後解析它,爲什麼不只是從邊緣刪除引號並將其視爲JavaScript對象字面量?) – Quentin

回答

10

使用反斜槓escape the character

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It\'s a test!"}}'; 
var parsed = JSON.parse(json); 
+0

使用反斜線是「轉義」字符的一個例子。查看更多信息[這裏](http://www.w3schools.com/js/js_strings.asp) –

+1

這回答了我發佈的問題。但是,我使用的解決方案是直接從json創建對象字面值,而不是通過簡單地刪除外部單引號將其轉換爲字符串。感謝Quentin指出了這一點。 – ezero

5

只是逃避單引號與作爲\'這樣一個反斜槓:

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It\'s a test!"}}'; 
 

 
var parsed = JSON.parse(json); 
 

 
//Output parsed to the document using JSON.stringify so it's human-readable and not just "[object Object]": 
 
document.write(JSON.stringify(parsed));

0

逃避它用反斜槓

var json = '{"1440167924916":{"id":1440167924916,"type":"text","content":"It\'s a test!"}}'; 

var parsed = JSON.parse(json); 
+0

這給了SyntaxError:意外的令牌ILLEGAL – Quentin

+0

@Quentin:現在應該正常工作。我想在嘗試縮進JSON的時候,按下「enter」鍵就會導致問題。 – mechanicals