2014-07-04 61 views
0

我對C#/ JSON相當陌生,並且正在開發一個寵物項目,以顯示來自傳奇聯盟的召喚師/遊戲信息。如何使用JSON.NET反序列化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

添加類Twopeas和裏面添加屬性twopeas它的類型是召喚師 –

+0

檢查出我對自己的答案這篇文章** http://stackoverflow.com/questions/25142325/getting-json-object-from-mvc-controller**我使用MVC來幫助這個過程。您將看到我如何使用AJAX調用C#,C#抓取JSON,然後將其傳回到Javascript以解析它。如果你是較新的Javascript/AJAX我也建議你看看我的** [初學者介紹暴動API和JSON,使用Javascript和Ajax](https://developer.riotgames.com/discussion/riot-games -api/show/kvll5V8r)** :) – Austin

回答

2

您的ID爲空,因爲您的JSON與您要反序列化的類不匹配。在JSON中,id屬性不在頂層:它包含在一個對象中,該對象是稱爲twopeas(可能代表召喚者名稱)的頂級屬性的值。由於此屬性的名稱可以根據您的查詢不同,你應該反序列化到一個Dictionary<string, Summoner>這樣的:

var summoners = 
      JsonConvert.DeserializeObject<Dictionary<string, Summoner>>(result); 

MessageBox.Show(summoners.Values.First().ID); 
+0

這工作!現在我只需要弄清楚爲什麼... – TomTomGo