如何将JSON转换为List <class>(Newtonsoft)

时间:2018-06-05 13:56:29

标签: c# json json.net

我正在从网络服务器下载JSON,并希望将其转换为List。 我正在使用Newtonsoft JsonConverter。 这个JSON是一组radom聊天消息。

JSON:

{  
   "messages":[  
      {  
         "_id":4,
         "_content":"ff",
         "_userName":"UAQ0FTQP5",
         "_timeStamp":"2018-06-04T11:46:00.000Z",
         "_processed":1
      },
      {  
         "_id":5,
         "_content":"Stop it mom",
         "_userName":"UAQ0FTQP5",
         "_timeStamp":"2018-06-04T11:47:22.000Z",
         "_processed":1
      },
      {  
         "_id":6,
         "_content":"General Kenobi",
         "_userName":"UB0QGN3EG",
         "_timeStamp":"2018-06-04T11:49:45.000Z",
         "_processed":1
      },
      {  
         "_id":7,
         "_content":"Hello General Kenobi",
         "_userName":"UB0QGN3EG",
         "_timeStamp":"2018-06-04T11:49:57.000Z",
         "_processed":1
      },
      {  
         "_id":8,
         "_content":"Hello there",
         "_userName":"UB15RMYDB",
         "_timeStamp":"2018-06-04T11:49:59.000Z",
         "_processed":1
      }
   ]
}

我的班级:

public class Message
{
    [JsonProperty("_id")]
    public int ID {get; set;}
    [JsonProperty("_content")]
    public string Content { get; set; }
    [JsonProperty("_userName")]
    public string UserName { get; set; }
    [JsonProperty("_timeStamp")]
    public DateTime TimeStamp { get; set; }
    [JsonProperty("_processed")]
    public int Processed { get; set; }
}

这是我尝试反序列化它: (变量JSON是一个保存上面JSON的字符串)

List<Message> messages = JsonConvert.DeserializeObject<List<Message>>(JSON);

当我尝试这个时,我收到了这个错误:

  

无法将当前JSON对象(例如{&#34; name&#34;:&#34; value&#34;})反序列化为类型System.Collections.Generic.List`1 [mom.client .Logik.Message]&#39;因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。   要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。   路径&#39;消息&#39;,第1行,第12位。

有没有人可以告诉我我被困的地方? 任何答案都将不胜感激。

亲切的问候。

0 个答案:

没有答案