2011-08-02 69 views
2

我想解析包含JavaScript中使用Json2.js的雙引號字符串的Json,如下所示。用引號解析簡單的json時出現語法錯誤?

<script src="Scripts/json2.js" type="text/javascript"></script> 
<script src="Scripts/jquery-1.4.4.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { 
     try { 
      var inv = JSON.parse('{"Items":[{"Quantity":1,"Description":"Width : 16\" Asd","Price":49.17,"IsEditable":false}],"Vat":20.00,"Delivery":0}'); 
      console.log(inv.Vat); 
     } 
     catch (err) { 
      console.log(err); 
     } 
    }); 

</script> 

但我在解析時出現語法錯誤。我在這裏錯過了什麼嗎?

+0

如果您發現問題的答案有助於解決您的問題,請點擊答案旁邊的勾號接受答案。這將有助於建立您的聲譽,並顯示在您的個人資料框中,以鼓勵任何新問題的答案。 –

回答

3

"Width : 16\"中的斜槓字符被視爲轉義JavaScript字符串中的"字符。由於字符串是用單引號分隔的,所以沒有區別,並且與"Width : 16"相同。

爲了在JavaScript字符串文字中包含JSON轉義引號字符,您需要轉義轉義字符。

"Width : 16\\" 

你可能會更好過只是有一個JS對象文字而不是JSON的字符串,你馬上解析:

var inv = {"Items":[{"Quantity":1,"Description":"Width : 16\" Asd","Price":49.17,"IsEditable":false}],"Vat":20.00,"Delivery":0}; 
1

\"會通過JavaScript已經解析時被轉換爲"串。

要使其通過\"到JSON,您應該使用\\"。這樣,解析的字符串是\",這將依次在JSON.parse處正確解析。

+0

感謝它的工作。 –

相關問題