【发布时间】:2014-09-26 19:10:10
【问题描述】:
我正在尝试解析以以下结构返回给我的 JSON,但我无法正确获取类的结构以使其正确解析:
{"44542152": [{
"queue": "RANKED_SOLO_5x5",
"name": "Elise's Elite",
"entries": [{
"leaguePoints": 0,
"isFreshBlood": false,
"isHotStreak": false,
"division": "IV",
"isInactive": false,
"isVeteran": false,
"playerOrTeamName": "Autdsm",
"playerOrTeamId": "44543152",
"wins": 11
}],
"tier": "SILVER"
}]}
但是,由于“44542152”:JSON 的根会根据我请求的用户而变化,我发现很难将其解析为对象。
这是我目前所拥有的:
public static AreTheyChallenger.Core.RankInfo getLeague(string region, Summoner summoner)
{
try
{
using (var webClient = new WebClient())
{
var json = webClient.DownloadString("https://" + region + ".api.pvp.net/api/lol/" + region + "/v2.5/league/by-summoner/" + summoner.id + "/entry" + "?api_key=" + Keys.api_key);
var summonerRankInfo = JObject.Parse(json).Values().First().ToObject<RankInfo>();
return summonerRankInfo;
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
return null;
}
这是我试图将其解析为的类:
public class RankInfo
{
public class Entry
{
public int leaguePoints { get; set; }
public bool isFreshBlood { get; set; }
public bool isHotStreak { get; set; }
public string division { get; set; }
public bool isInactive { get; set; }
public bool isVeteran { get; set; }
public string playerOrTeamName { get; set; }
public string playerOrTeamId { get; set; }
public int wins { get; set; }
}
public class RootObject
{
public string queue { get; set; }
public string name { get; set; }
public List<Entry> entries { get; set; }
public string tier { get; set; }
}
}
我对此很陌生,如果问题很明显,我很抱歉,但我的目的是能够访问一些存储的属性并将它们呈现给用户。
提前致谢。
【问题讨论】:
-
尝试使用它来生成您的课程:jsonclassgenerator.codeplex.com 非常方便 IMO :)
-
问题很明显,但解决方案肯定不是。好问题:)
-
如果您不想下载任何东西,也可以使用 json2csharp。 json2csharp.com
-
感谢您的 cmets :) 我一直在使用这样的工具,但事实证明它没有考虑数组,我也没有考虑,这就是问题所在。