2017-02-16 46 views
2

我有很大的JSON是這樣的:解析JSON有反斜槓 - 使用Javascript

{"EmployeeMaster":{"ImageContent":null,"ImageName":null,"EMP_PhotoPath":"E:\BBM0000000001comparison.png"} 
} 

我試圖解析它,但它不工作,由於在EMP_PhotoPath削減。

如何解決此錯誤?

+0

您需要用斜槓轉義斜線:'[...] th「:」E:\\ BBM00000 [012]' –

+1

當您說「解析」時,您的意思是JSON.parse?因爲這工作正常 – KevBot

+0

你需要轉義反斜槓。同樣的問題已經被問到[這裏](http://stackoverflow.com/questions/12655517/bug-with-javascripts-json-parse)和[這裏](http://stackoverflow.com/questions/26497218/handling-反斜槓時的解析,JSON)。 – freginold

回答

1

你必須用第二個斜槓來跳過斜線。你的有效的JSON看起來就像是:

{ 
    "EmployeeMaster": { 
     "ImageContent": null, 
     "ImageName": null, 
     "EMP_PhotoPath": "E:\\BBM0000000001comparison.png" 
    } 
} 

PS:它粘貼到JSONLint.com到verifiy。

+0

我知道,雙斜槓將做的伎倆,但如何可以添加雙斜槓? –

2

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是,你可以用它來獲得不解釋原始字符串的方法,

它用於獲取模板字符串的原始字符串形式(也就是原始的,未解釋的文本)。

所以,你可以替換雙反斜槓反斜槓,那麼你可以分析它保持原有的反斜槓。

+1

手動操作由標準庫生成的JSON字符串是一個壞主意。 – Adam

+0

是的,這是完全正確的,但請賜教另一個解決方案。 –

+0

同意亞當,它不是一個很好的選擇,但現在它是一個很好的解決方案。 @Adam您是否看到上述解決方案存在重大風險? –