对包含数字键的JSON进行反序列化.Json.NET



我想将JSON(使用JSON.NET(反序列化为对象。但不能,因为类名需要以数字开头。

{
"status":"ok",
"meta":{
"count":1
},
"data":{
"7887207":{
"global_rating":9524,
"statistics":{  
"random":{
"damage_dealt":54395747,
"wins":17502,
"hits_percents":74,
"battle_avg_xp":797,
"battles":31389
}
},
"last_battle_time":1600087522
}
}
}

如何反序列化这个包含数字的JSON?我尝试使用以下指南(使用JSON.NET对包含数字键的JSON进行沙漠化(

public class MetaGetPlayerStats
{
public int count { get; set; }
}
public class RandomGetPlayerStats
{
public int damage_dealt { get; set; }
public int wins { get; set; }
public int hits_percents { get; set; }
public int battle_avg_xp { get; set; }
public int battles { get; set; }
}
public class StatisticsGetPlayerStats
{
public RandomGetPlayerStats random { get; set; }
}
public class AccountGetPlayerStats
{
public int global_rating { get; set; }
public StatisticsGetPlayerStats statistics { get; set; }
public int last_battle_time { get; set; }
}
public class AccountInfo
{
[JsonProperty("data")]
public Dictionary<int, AccountGetPlayerStats> AccountInfoStats { get; set; }
}
public class GetPlayerStats
{
public string status { get; set; }
public MetaGetPlayerStats meta { get; set; }
public AccountInfo data { get; set; }
}

但它不起作用。它看到了田野";"状态";以及";meta";,但是";数据"==空图像

AccountInfo过量。data是一本字典。这会奏效的。

public class GetPlayerStats
{
public string status { get; set; }
public MetaGetPlayerStats meta { get; set; }
public Dictionary<string, AccountGetPlayerStats> data { get; set; }
}

您只需要像这样更改GetPlayerStats类:

public class GetPlayerStats
{
public string status { get; set; }
public MetaGetPlayerStats meta { get; set; }
[JsonProperty("data")]
public Dictionary<string, JObject> AccountInfoStats { get; set; }
// public AccountInfo data { get; set; }
}

然后你可以继续进行逻辑,遵循参考。用"反序列化JSON;"随机";密钥

最新更新