Json反序列化失败

时间:2019-05-09 05:58:06

标签: c# json serialization json.net

我有以下从API调用接收到的json字符串:

"\"{\\r\\n  \\\"Table\\\": [\\r\\n    {\\r\\n      \\\"MaxDate\\\": \\\"2019-06-09T00:00:00\\\",\\r\\n      \\\"MinDate\\\": \\\"2019-01-26T00:00:00\\\"\\r\\n    }\\r\\n  ]\\r\\n}\""

我想将此字符串反序列化为以下类结构

    public class Dates
    {
        public DateTime MaxDate { get; set; }

        public DateTime MinDate { get; set; }
    }

    public class TableResult
    {
        public List<Dates> Table { get; set; }
    }

当我尝试使用Newtonsoft的Jsonconvert将json字符串反序列化为上述类时,

 JsonConvert.DeserializeObject<TableResult>(result);

它引发异常

Error converting value "{
  "Table": [
{
  "MaxDate": "2019-06-09T00:00:00",
  "MinDate": "2019-01-26T00:00:00"
}
 ]}" to type 'API_Test.Program+TableResult'. Path '', line 1, position 144.

我尝试从字符串中删除空格和\ r \ n,但仍然会引发异常并且无法反序列化。

有人可以帮我弄清楚我在做什么错吗?

编辑1:

我从API获得的

字符串如下图所示: enter image description here

编辑2: 我已经更新了原始的json字符串

1 个答案:

答案 0 :(得分:1)

您的API返回的string表示json为字符串。因此,您首先需要反序列化为string,然后反序列化为您的TableResult

var json = "\"{\\r\\n  \\\"Table\\\": [\\r\\n    {\\r\\n      \\\"MaxDate\\\": \\\"2019-06-09T00:00:00\\\",\\r\\n      \\\"MinDate\\\": \\\"2019-01-26T00:00:00\\\"\\r\\n    }\\r\\n  ]\\r\\n}\"";

var str = JsonConvert.DeserializeObject<string>(json);
var test = JsonConvert.DeserializeObject<TableResult>(str);