如何使用JSON反序列化JSON.NET(获取空结果)

本文关键字:JSON 结果 获取 NET 何使用 反序列化 | 更新日期: 2023-09-27 18:11:35

我对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,我不知道为什么。

我肯定我错过了一些非常明显的东西,但我很困惑,我怎么也想不出来。

如何使用JSON反序列化JSON.NET(获取空结果)

您的ID为null,因为您的JSON与您要反序列化的类不匹配。在JSON中,id属性不在顶层:它包含在一个对象中,该对象是称为twopeas的顶层属性的值(大概代表召唤师的名称)。由于该属性名称可能因查询而异,因此应该将其反序列化为Dictionary<string, Summoner>,如下所示:

var summoners = 
           JsonConvert.DeserializeObject<Dictionary<string, Summoner>>(result);
MessageBox.Show(summoners.Values.First().ID);