我一直在試圖弄清楚爲什麼下面的JSON輸入將無法在JSON.parse函數中解析。JSON解析錯誤反斜槓
{"World":"Hello\\Test"}
上面的json被JSON.NET返回。
我已經嘗試了多種方法來獲得這個工作。正如你可以看到反斜槓被轉義並且https://jsonlint.com/能夠解析它。
我也有一個失敗的樣本,在https://jsfiddle.net/ckp0uc0p/3/以及。
任何幫助將不勝感激。
我一直在試圖弄清楚爲什麼下面的JSON輸入將無法在JSON.parse函數中解析。JSON解析錯誤反斜槓
{"World":"Hello\\Test"}
上面的json被JSON.NET返回。
我已經嘗試了多種方法來獲得這個工作。正如你可以看到反斜槓被轉義並且https://jsonlint.com/能夠解析它。
我也有一個失敗的樣本,在https://jsfiddle.net/ckp0uc0p/3/以及。
任何幫助將不勝感激。
注入JSON轉換成JavaScript 源的最佳方式代碼(在使用服務器端語言生成JavaScript時),是直接將其注入到需要它的位置,而不是在需要它的字符串文本中被解析。
例如:
var foo = <json blob>;
,這樣的結果將是
var foo = {"World":"Hello\\Test"};
的JavaScript將其解釋爲一個對象字面從而導致對象,這是你想要什麼無論如何。這可以避免「嵌套」轉義序列的所有問題。
您需要爲想要顯示的每個反斜槓添加兩個\\
。如果你解析JSON,顯示2個反斜線你需要添加4
// inside a string to be parsed as json
var json = '{"World":"Hello\\\\Test"}'
console.log(JSON.parse(json))
// directly in an object
var object = {"World": "Hello\\Test"}
console.log(object)
try
{
var res = '{"World":"Hello\\\\Test"}';
\t var s = JSON.parse(res);
console.log(JSON.stringify(s));
} catch(error) {
\t alert(error);
}
[爲什麼jQuery JSON解析器需要雙反斜槓?](http://stackoverflow.com/questions/3807537/why-does-the-jquery-json-parser-need-double-escaping -for-backslashes) – Brennan
不幸的是,我不控制這些數據。我標記JSON.NET,因爲這個數據似乎被該組件解析並以這種方式存儲。 – Hozikimaru
您發佈的JSON有效。你究竟如何解析它?你真的把它作爲一個字符串文字注入到JavaScript源代碼中嗎? –