我对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
是null,我不知道为什么。
我肯定我错过了一些非常明显的东西,但我很困惑,我怎么也想不出来。
您的ID
为null,因为您的JSON与您要反序列化的类不匹配。在JSON中,id
属性不在顶层:它包含在一个对象中,该对象是称为twopeas
的顶层属性的值(大概代表召唤师的名称)。由于该属性名称可能因查询而异,因此应该将其反序列化为Dictionary<string, Summoner>
,如下所示:
var summoners =
JsonConvert.DeserializeObject<Dictionary<string, Summoner>>(result);
MessageBox.Show(summoners.Values.First().ID);