Json:如何使用json.net正确剥离转义字符
我有以下格式的json响应。
"[{\\\"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>>(contentCorrected);
但是这个json解析会抛出exception“无效的属性标识符:.Path'[0]’,第1行,第2位。” 我们可以通过操纵json响应字符串来解决这个问题吗?
尝试string contentCorrected = contentCorrected.Replace(@"\", "");
在反序列化过程之前。
-
在反序列化之前删除所有“\”字符。 使用替换function。
yourJsonString.Replace(“\\\\\”,“”);
-
你的Json字符串不完整或者似乎不是
List
的类型。更正你希望转换json的类型。我修改了你的json,如下所示,它有效。>" newJson =“{\”array \“:”+ yourJsonString +“}”
对我来说,下面的代码有效
string contentCorrected = contentCorrected.Replace(**@"\""", ""**);
在答案中使用有效的双引号时会出现问题。 在所有情况下,删除和/或替换都不会解决这个问题。 在我找到一个简单的解决方案之前,我也很沮丧:
var billList = JsonConvert.DeserializeObject>>(@contentCorrected);