我是C#/ JSON的新手,我正在开展一个宠物项目来展示传奇联盟的召唤者/游戏信息。
我正在尝试获取所请求的召唤者名称的召唤者ID。
这是返回的JSON:
{"twopeas": {
"id": 42111241,
"name": "Twopeas",
"profileIconId": 549,
"revisionDate": 1404482602000,
"summonerLevel": 30
}}
这是我的召唤师课程:
public class Summoner
{
[JsonProperty(PropertyName = "id")]
public string ID { get; set; }
}
以下是其余部分:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
result = reader.ReadToEnd();
var summonerInfo = JsonConvert.DeserializeObject<Summoner>(result);
MessageBox.Show(summonerInfo.ID);
summonerInfo.ID
为空,我不知道为什么。
我确信有一些明显的东西让我失踪了,但我不知道我不能为我的生活弄清楚。
答案 0 :(得分:2)
您的ID
为空,因为您的JSON与您要反序列化的类不匹配。在JSON中,id
属性不在顶层:它包含在一个对象中,该对象是名为twopeas
的顶级属性的值(可能代表召唤者名称)。由于此属性名称可能因查询而异,因此您应该反序列化为Dictionary<string, Summoner>
,如下所示:
var summoners =
JsonConvert.DeserializeObject<Dictionary<string, Summoner>>(result);
MessageBox.Show(summoners.Values.First().ID);