问题 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<string, string>>>(contentCorrected);

但是这个json解析会抛出异常 “无效的属性标识符:。路径'[0]',第1行,位置2.” 我们可以通过操纵json响应字符串来解决这个问题吗?


7482
2018-05-02 06:32


起源

试试Regex.Unescape()。详细解决方案可在此处找到: stackoverflow.com/a/40188910/593932 - Sunil
Json.Parse(字符串)可能会有所帮助。看我提供的答案 这里 - Simba


答案:


尝试 string contentCorrected = contentCorrected.Replace(@"\", "");在反序列化过程之前。


16
2018-05-02 08:25



谢谢Bijoy ....它的工作.....谢谢 - Sharon C Lawrence
应该是这样的 contentCorrected = contentCorrected.Replace(@"\""", @"""") - msa7
要么 contentCorrected = contentCorrected.Replace(@"\", string.Empty) - hatsrumandcode


  1. 在反序列化之前删除所有“\”字符。使用替换功能。

    yourJsonString.Replace(“\\\\\”,“”);

  2. 您的Json字符串不完整或似乎不是类型 List<Dictionary<string, string>>"。更正要转换json的类型。 我修改你的json如下,它工作。

    newJson =“{\”array \“:”+ yourJsonString +“}”


0
2018-05-02 06:55





对我来说,下面的代码有效

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

0
2017-12-13 09:57





在答案中使用有效的双引号时会出现问题。在所有情况下,删除和/或替换都不会解决这个问题。 在我找到一个简单的解决方案之前,我也很沮丧:

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

0
2018-03-06 06:46