C#将json转换为多个类

C#将json转换为多个类,c#,json,parsing,serialization,C#,Json,Parsing,Serialization,我有个问题。我试图将我的json解析为2个类。以下是json: { "user":[ [ { "Id":"0", "Username":"Vreeswijk", "ProfilePicture":"media/user/0.png" } ] ], "token":[ [ { "access_to

我有个问题。我试图将我的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
         }
      ]
   ]
}
这是我的两门课:

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);
}
var jObject=jObject.Parse(json); var userPropery=jObject[“user”]作为JArray; userList=新列表(); foreach(UserProperty中的var属性) { var propertyList=JsonConvert.DeserializeObject(property.ToString()); AddRange(propertyList); }
如何在1个json中为2个类执行此操作?

您可以为您的json创建一个
类,并根据需要使用
用户
令牌
类在其中添加两个属性

公共类根目录
{
公共列表用户{get;set;}
公共列表标记{get;set;}
}

然后在
反序列化object
函数中传递此类以反序列化json。

如果观察json,则用户和令牌都是嵌套数组。现在,您可以创建具有两个必需属性的根类。比如说

public class Root
{
    public List<List<User>> user { get; set; }
    public List<List<Token>> token { get; set; }
}
要获得平坦的用户和令牌列表,可以使用

var userList= root.user.SelectMany(x=>x); 
var tokenList= root.token.SelectMany(x=>x); 

为什么不创建一个同时包含
user
token
的类呢?
如果不这样做,请逐个解析。

好的,但我不需要使用列表,因为我总是返回1个元素。但是我需要如何处理这一行:
var userPropery=jObject[“user”]作为JArray。。。。。我现在需要这两个?您是否尝试过使用
var-tokenPropery=jObject[“token”]作为JArray
使用现有代码反序列化?当我将json直接放入反序列化程序时,会出现以下错误:
Newtonsoft.json.JsonSerializationException:'无法将当前json数组(例如[1,2,3])反序列化为类型'MyApp.Models.User',因为该类型需要json对象(例如,{“name”:“value”})正确反序列化。
希望您在将Json字符串解析为JObject后直接使用它,而不是它的一部分?我没有将任何内容解析为JObject。我提供了从页面中获得的结果
var userList= root.user.SelectMany(x=>x); 
var tokenList= root.token.SelectMany(x=>x);