我有一個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