我有一个JSON反序列化的问题。我创建了一个C#程序,并使用了Json.NET。如何正确反序列化我的JSON对象?
JSON对象,我必须反序列化是:
{
"modifyDate": 1400648078000,
"champions": [
{
"id": 143,
"stats": {
"totalDeathsPerSession": 7,
"totalSessionsPlayed": 1,
"totalDamageTaken": 19377,
"totalQuadraKills": 0,
"totalTripleKills": 0,
"totalMinionKills": 38,
"maxChampionsKilled": 4,
"totalDoubleKills": 0,
"totalPhysicalDamageDealt": 4862,
"totalChampionKills": 4,
"totalAssists": 17,
"mostChampionKillsPerSession": 4,
"totalDamageDealt": 53289,
"totalFirstBlood": 0,
"totalSessionsLost": 0,
"totalSessionsWon": 1,
"totalMagicDamageDealt": 46696,
"totalGoldEarned": 12787,
"totalPentaKills": 0,
"totalTurretsKilled": 0,
"mostSpellsCast": 0,
"maxNumDeaths": 7,
"totalUnrealKills": 0
}
},
{
"id": 115,
"stats": {
"totalDeathsPerSession": 8,
"totalSessionsPlayed": 1,
"totalDamageTaken": 18926,
"totalQuadraKills": 0,
"totalTripleKills": 0,
"totalMinionKills": 219,
"maxChampionsKilled": 4,
"totalDoubleKills": 0,
"totalPhysicalDamageDealt": 8912,
"totalChampionKills": 4,
"totalAssists": 6,
"mostChampionKillsPerSession": 4,
"totalDamageDealt": 170050,
"totalFirstBlood": 0,
"totalSessionsLost": 1,
"totalSessionsWon": 0,
"totalMagicDamageDealt": 161137,
"totalGoldEarned": 10950,
"totalPentaKills": 0,
"totalTurretsKilled": 0,
"mostSpellsCast": 0,
"maxNumDeaths": 8,
"totalUnrealKills": 0
}
}, ...
这是一个复杂的对象。
代表这个对象我的C#类是:
class StatRankedJoueur
{
private double modifyDate;
public double ModifyDate
{
get { return modifyDate; }
set { modifyDate = value; }
}
private int _summonerId;
public int SummonerId
{
get { return _summonerId; }
set { _summonerId = value; }
}
private Dictionary<int, Dictionary<String, double>> champions;
public Dictionary<int, Dictionary<String, double>> Champions
{
get
{
return champions;
}
set
{
champions = value;
}
}
}
反序列化:
StatRankedJoueur values = JsonConvert.DeserializeObject<StatRankedJoueur>(response);
但我已经这个问题,当我编译:
无法反序列化当前JSON数组(例如[1,2,3])类型为'System.Collections.Generic.Dictionary
2[System.Int32,System.Collections.Generic.Dictiona>y
2 [System.String,System.Double]]'b因为该类型需要JSON对象(例如, >> {“name”:“value”})正确反序列化。
我发现这个错误是这样的网站,但解决办法是改变这一行:
StatRankedJoueur values = JsonConvert.DeserializeObject<StatRankedJoueur>(response);
由:
var list = JsonConvert.DeserializeObject<List<KeyValuePair<string,List<KeyValuePair<string, string>>>> >(json);
问题是我没有“对象“列表是我的JSON。那么怎么做呢?
附注:避免新的在这里/谢谢你在笔记和标题标题。显示问题信息/代码(正如你所做的)绰绰有余。 –
请注意,在上面给出的JSON示例中,“冠军”是**数组**,而在您的C#类中则是**字典**。因此,JSON解串器正确地抱怨这种不匹配。一种方法是创建*另一个类*,用JSON对象与“id”和“stats”属性匹配,并声明你的*冠军*属性,如'Public List冠军' –
elgonzo