我有很大的JSON是這樣的:解析JSON有反斜槓 - 使用Javascript
{"EmployeeMaster":{"ImageContent":null,"ImageName":null,"EMP_PhotoPath":"E:\BBM0000000001comparison.png"}
}
我試圖解析它,但它不工作,由於在EMP_PhotoPath
削減。
如何解決此錯誤?
我有很大的JSON是這樣的:解析JSON有反斜槓 - 使用Javascript
{"EmployeeMaster":{"ImageContent":null,"ImageName":null,"EMP_PhotoPath":"E:\BBM0000000001comparison.png"}
}
我試圖解析它,但它不工作,由於在EMP_PhotoPath
削減。
如何解決此錯誤?
你必須用第二個斜槓來跳過斜線。你的有效的JSON看起來就像是:
{
"EmployeeMaster": {
"ImageContent": null,
"ImageName": null,
"EMP_PhotoPath": "E:\\BBM0000000001comparison.png"
}
}
PS:它粘貼到JSONLint.com到verifiy。
我知道,雙斜槓將做的伎倆,但如何可以添加雙斜槓? –
var jsonString = String.raw`{"EmployeeMaster":{"ImageContent":null,"ImageName":null,"EMP_PhotoPath":"E:\BBM0000000001comparison.png"}}`;
jsonString = jsonString.replace("\\","\\\\");
var jsonObj = JSON.parse(jsonString);
alert(jsonObj.EmployeeMaster.EMP_PhotoPath);
你可以做這樣的事情實現這一目標:
var jsonString = String.raw`{"EmployeeMaster":{"ImageContent":null,"ImageName":null,"EMP_PhotoPath":"E:\BBM0000000001comparison.png"}}`;
jsonString = jsonString.replace("\\","\\\\");
var jsonObj = JSON.parse(jsonString);
String.raw是,你可以用它來獲得不解釋原始字符串的方法,
它用於獲取模板字符串的原始字符串形式(也就是原始的,未解釋的文本)。
所以,你可以替換雙反斜槓反斜槓,那麼你可以分析它保持原有的反斜槓。
手動操作由標準庫生成的JSON字符串是一個壞主意。 – Adam
是的,這是完全正確的,但請賜教另一個解決方案。 –
同意亞當,它不是一個很好的選擇,但現在它是一個很好的解決方案。 @Adam您是否看到上述解決方案存在重大風險? –
您需要用斜槓轉義斜線:'[...] th「:」E:\\ BBM00000 [012]' –
當您說「解析」時,您的意思是JSON.parse?因爲這工作正常 – KevBot
你需要轉義反斜槓。同樣的問題已經被問到[這裏](http://stackoverflow.com/questions/12655517/bug-with-javascripts-json-parse)和[這裏](http://stackoverflow.com/questions/26497218/handling-反斜槓時的解析,JSON)。 – freginold