我正在使用这些课程:
public class MasteryPages
{
internal MasteryPages() { }
[JsonProperty("pages")]
public List<MasteryPage> Pages { get; set; }
[JsonProperty("summonerId")]
public long SummonerId { get; set; }
}
[Serializable]
public class MasteryPage
{
internal MasteryPage() { }
[JsonProperty("current")]
public bool Current { get; set; }
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("talents")]
public List<Talent> Talents { get; set; }
}
[Serializable]
public class Talent
{
internal Talent() { }
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("rank")]
public int Rank { get; set; }
}
这是我用来反序列化对象的代码
//MASTERIES
var jsonMasteries = requester.CreateRequest(string.Format(RootUrl, Region) + string.Format(MasteriesUrl, summonerId));
var objAllMasteryPages = JsonConvert.DeserializeObject<MasteryPages>(jsonMasteries);
jsonMasteries对象被正确序列化并给我这个: http://pastebin.com/3dkdDHdx(相当大,轻松查看:转到http://www.jsoneditoronline.org/并粘贴)
然而,第二行给了我麻烦。通常我的对象应该填充数据。不幸的是,它不是,我不知道什么是错的。
任何人都可以帮助我吗?
答案 0 :(得分:0)
您的问题出在序列化JSON的这一部分:"42177333": { ... }
据我了解 - 这是某种身份证,而且是动态的。 可能的解决方案是:
答案 1 :(得分:0)
感谢梦游者我看到了什么问题。 (动态Id(数字),第一行)
现在,James Newtonking JSON库有一个动态id的解决方案。 我编写了我的代码:
var jsonMasteries = requester.CreateRequest(string.Format(RootUrl, Region) + string.Format(MasteriesUrl, summonerId));
var objAllMasteriePages = JsonConvert.DeserializeObject<Dictionary<long, MasteryPages>>(jsonMasteries).Values.FirstOrDefault().Pages;
(第一行保持不变,魔术在第二行) 现在,我使用一个字典,其中键是我给定的Id,以及我的自定义类。
这可以创造奇迹