首页 > 解决方案 > C# 将 json 转换为多个类

问题描述

我有个问题。我正在尝试将我的 json 解析为 2 个类。这是json:

{
   "user":[
      [
         {
            "Id":"0",
            "Username":"Vreeswijk",
            "ProfilePicture":"media/user/0.png"
         }
      ]
   ],
   "token":[
      [
         {
            "access_token":"myToken1",
            "refresh_token":"myToken2",
            "expires_in":3600,
            "expires_on":1577363756
         }
      ]
   ]
}

这是我的 2 节课:

public class Token
{
    public string access_token { get; set; }
    public string refresh_token { get; set; }
    public int expire_in { get; set; }
    public int expire_on { get; set; }

    public Token() { }
}

这是用户类:

public class User
{
    [PrimaryKey]
    public int Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string ProfilePicture { get; set; }

    public User() { }
    public User(string Username, string Password)
    {
        this.Username = Username;
        this.Password = Password;
    }
}

现在我想将 json 反序列化为这两个类。这是我的代码,现在仅适用于 1 类:

var jObject = JObject.Parse(json);
var userPropery = jObject["user"] as JArray;
userList= new List<user>();

foreach (var property in userPropery )
{
    var propertyList = JsonConvert.DeserializeObject<List<user>>(property.ToString());

    userList.AddRange(propertyList);
}

我怎样才能使这项工作适用于 1 个 json 中的 2 个类?

标签: c#jsonparsingserialization

解决方案


您可以为您的 json 创建一个Root类,并根据需要在其中添加两个属性UserToken类。

public class Root
{
    public List<List<User>> Users { get; set; }
    public List<List<Token>> Tokens { get; set; }
}

然后在函数中传递这个类DeserializeObject来反序列化json。


推荐阅读