1

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

我正在尝试将 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"
          }
        ]
      }
}

造型不好见谅!!

4

2 回答 2

0

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

public class Response
{
    public Response()
    {
        Users = new List<User>();
    }
    public IEnumerable<User> Users { get; set; }
    public JObject Exception { get; set; }
}
于 2012-06-17T13:55:55.037 回答
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;
}

谢谢!:)

于 2012-06-18T12:22:20.043 回答