反序列化包含其他JSON字符串的JSON

时间:2018-09-12 16:05:34

标签: c# json json.net

我有一个如下的JSON结构:

{
    "totalCount": 2,
    "entries": [
        {
            "id": "80e88220-af3c-11e8-a8d1-02faede05ee2",
            "logType": "Success",
            "dateCreated": "2018-09-03T05:45:14",
            "message": "{\"orderType\":\"Report\",\"language\":\"en\",\"payloadSize\":45439}"
        },
        {
            "id": "a8130f00-af3c-11e8-a8d1-02faede05ee2",
            "logType": "Success",
            "dateCreated": "2018-09-03T05:46:14",
            "message": "{\"orderType\":\"Report\",\"language\":\"en\",\"payloadSize\":45439}"
        }
}

我正尝试将其反序列化为以下类:

public class ApiResponse
{
    public int TotalCount { get; set; }
    public List<Entry> Entries { get; set; }
}

public class Entry
{
    public string Id { get; set; }
    public string LogType { get; set; }
    public DateTime DateCreated { get; set; }
    public Message Message { get; set; }
}

public class Message
{
    public string OrderType { get; set; }
    public string Language { get; set; }
    public int PayloadSize { get; set; }
}

我正在使用Json.NET将对象反序列化为类。我希望它可以动态地看到该字符串,并尝试将其解析为Message类,但是它没有起作用。

var logs = JsonConvert.DeserializeObject<ApiResponse>(responseContent);

这会导致JsonSerializationException

  

将值“ {” orderType“:” Report“,” language“:” en“,” payloadSize“:45439}”转换为类型“ ConnectApiUsage.Message”时出错。路径“ entries [0] .message”,第8行,位置84。

     

无法转换或从System.String转换为ConnectApiUsage.Message。

这种反序列化是不可能的还是我只是缺少属性?我尝试浏览Json.NET文档,但找不到针对此特定情况的任何内容。我知道我可以将其放入字符串中,然后稍后对该字段进行反序列化,但我希望一步一步就能做到。

0 个答案:

没有答案