使用Json.NET使用自定义对象数组反序列化JSON

时间:2012-06-17 13:51:39

标签: json serialization json.net root

我收到了一个JSON文件,其中包含一个根元素“users”和一个“user”项列表。

我正在尝试将json反序列化为名为List的自定义类的User,但我不断得到JsonSerializationException,它无法覆盖它。

我尝试了以下内容:

代码:

 public class User
{
    public int ID { get; set; }
    public bool Active { get; set; }
    public string Name { get; set; }
}

public class Response
{
    public List<User> Users { get; set; }
    public JObject Exception { get; set; }
}

和 -

public Response DeserializeJSON(string json)
    {
        Response deserialized = JsonConvert.DeserializeObject<Response>(json);
        return deserialized;
    }

JSON:

    {
  "Users": {
        "User": [
          {
            "id": "1",
            "active": "true",
            "name": "Avi"
          },
          {
            "id": "2",
            "active": "false",
            "name": "Shira"
          },
          {
            "id": "3",
            "active": "false",
            "name": "Moshe"
          },
          {
            "id": "4",
            "active": "false",
            "name": "Kobi"
          },
          {
            "id": "5",
            "active": "true",
            "name": "Yael"
          }
        ]
      }
}

抱歉造型不好!!

2 个答案:

答案 0 :(得分:0)

在Response类中,尝试在构造函数中初始化集合。

public class Response
{
    public Response()
    {
        Users = new List<User>();
    }
    public IEnumerable<User> Users { get; set; }
    public JObject Exception { get; set; }
}

答案 1 :(得分:0)

啊,我需要更好地开始阅读JSON ...... :) 我的问题是这个JSON字符串有2个“包装器”:

根元素是“Users”,它包含一个名为“User”的元素。 这修好了它:

public class User
{
    public int id { get; set; }
    public bool active { get; set; }
    public string name { get; set; }
}

public class Response
{
    public ResponseContent users { get; set; }
}

public class ResponseContent
{
    public List<User> user;
}

谢谢! :)