2016-11-18 80 views
3

我無法弄清楚什麼是在下面的代碼使用JSON問題。JSON.parse字符串無效字符的問題

這是工作的罰款:

var a = JSON.parse('[{"label":"not applicable"},{"label":"see items"},{"label":"40 days"},{"label":"suntest"}]'); 

但這拋出一個異常, 「無效字符」:

var b = JSON.parse('[{"label":"234"},{"label":"Sunny AG, Sunny Me- Be Cars, Ben., Bu 60, DE 71059, Sind, Discharge p no. 9711\r\n"},{"label":"C207346"}]'); 

在調試我上面複製的運行時代碼。實際代碼在C#MVC中爲:

var a= JSON.parse('@Html.Raw(Json.Encode(Model.ShipToAddressCodeList))'); 
+0

請記住,撇號在C#中是char,而不是字符串。 – spatbord

回答

5

您需要轉義\r\n。 JavaScript的解釋在\r\n爲轉義字符\的,但實際上它們是字符串的一部分,應該留下來。在每個\修復它的前面添加另一個\,通過轉義轉義字符,因此JSON解析器把它從字面上:

var b = JSON.parse('[{"label":"234"},{"label":"Sunny AG, Sunny Me- Be Cars, Ben., Bu 60, DE 71059, Sind, Discharge p no. 9711\\r\\n"},{"label":"C207346"}]'); 
+0

感謝@Joe的快速回復和幫助....您還從「我是」之間的字符串中刪除了連字符( - )。我是否還需要刪除它? – devgal

+1

C#在這裏給非字面解釋爲「\ n」,而不是JavaScript。你可以告訴,因爲這裏沒有JavaScript *,但你仍然有問題。 – LinuxDisciple

1

你需要逃避你\r\n\\r\\n

var b = JSON.parse('[{"label":"234"},{"label":"Sunny AG, Sunny Me- Be Cars, Ben., Bu 60, DE 71059, Sind, Discharge p no. 9711\\r\\n"},{"label":"C207346"}]');