2013-05-02 60 views
8

我有以下格式的json響應。Json:如何正確地剝離轉義字符與json.net

"[{\\\"JobID\\\":\\\"1\\\",\\\"BillGenerationDate\\\":\\\"4/29/2013 2:53:34 PM\\\",\\\"BillID\\\":\\\"115743\\\",\\\"BillNo\\\":\\\"115743\\\",\\\"CustomerID\\\":\\\"4041705\\\",\\\"PayStatus\\\":\\\"0\\\",\\\"PaymentRequiredStatus\\\":\\\"True\\\",\\\"ProductName\\\":\\\"Epic FBO test\\\",\\\"Description\\\":\\\"Epic Automation 2\\\\r\\\\n\\\",\\\"ProductType\\\":\\\"eBill \\\",\\\"DueType\\\":\\\"-1\\\",\\\"DueDate\\\":\\\"2013-03-15\\\",\\\"Amount\\\":\\\"63.70\\\",\\\"Cost\\\":\\\"\\\"}, 
{\\\"JobID\\\":\\\"9\\\",\\\"BillGenerationDate\\\":\\\"5/2/2013 10:21:39 AM\\\",\\\"BillID\\\":\\\"115743\\\",\\\"BillNo\\\":\\\"115743\\\",\\\"CustomerID\\\":\\\"4041705\\\",\\\"PayStatus\\\":\\\"0\\\",\\\"PaymentRequiredStatus\\\":\\\"True\\\",\\\"ProductName\\\":\\\"FBO Test Product\\\",\\\"Description\\\":\\\"FBO Product Test\\\",\\\"ProductType\\\":\\\"eBill \\\",\\\"DueType\\\":\\\"-1\\\",\\\"DueDate\\\":\\\"2013-05-01\\\",\\\"Amount\\\":\\\"150.70\\\",\\\"Cost\\\":\\\"\\\"}] 

我相信json.net處理轉義字符,我用下面的代碼將其反序列化爲字典集合。

var billList = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(contentCorrected); 

但這JSON解析拋出異常 「無效的屬性標識符字符:路徑 '[0]',第1行,位置2」 我們可以通過操縱json響應字符串來解決這個問題嗎?

回答

15

反序列化過程之前,試着string contentCorrected = contentCorrected.Replace(@"\", "");

+0

感謝Bijoy ....它的工作.....感謝 – 2013-05-02 09:41:46

+1

應該是這樣'contentCorrected = contentCorrected.Replace(@ 「\」 「」 ,@「」「」)' – msa7 2015-08-19 10:19:49

+0

或 'contentCorrected = contentCorrected.Replace(@「\」,string.Empty)' – 2016-04-01 09:46:27

0
  1. 在反序列化之前刪除所有「\」字符。使用替換功能。

    yourJsonString.Replace(「\\\\\」,「」);

  2. 您的Json字符串不完整或似乎不是List<Dictionary<string, string>>"類型。改正你想要轉換json的類型。 我修改了你的json,如下所示,它工作。

    newJson = 「{\」 數組\ 「:」 + yourJsonString + 「}」

-1

對我來說,下面的代碼工作

string contentCorrected = contentCorrected.Replace(**@"\""", ""**); 
0

時有效的雙引號的答案中使用時出現問題。在所有情況下,移除和/或替換都不會解決這個問題。 它沮喪我太多,直到我發現了一個簡單的解決方案:

var billList = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(@contentCorrected);