2015-08-20 43 views
-1

我想解析通過api獲取的json對象的信息,但在此請求中,我試圖只獲取一個變量。我只想得到summonerLevel變量。從Json文本解析通用變量

{ 
"unashamedohio": { 
    "id":107537, 
    "name":"UnashamedOhio", 
    "profileIconId":785, 
    "summonerLevel":30, 
    "revisionDate":1440089189000 
} 
} 

我一直在試圖將它與這個代碼,我知道,如果我寫

p.summonerLevel = (int)(obj.unashamedohio.summonerLevel) 

它會工作,但問題是,​​不是一個靜態的名字,它會在每次請求中都要改變。有關如何做的一個很好的例子? 感謝

WebClient c = new WebClient(); 
string data = c.DownloadString("https://las.api.pvp.net/api/lol/las/v1.4/summoner/by-name/"+summonerName+"?api_key=<api-key>"); 
dynamic obj = JsonConvert.DeserializeObject(data); 
p.summonerLevel = (int)(obj.tempName.summonerLevel); 
+0

我也試過這個。 : p.summonerLevel =(int)obj [p.summonerName] [「summonerLevel」]; –

+1

JSON結構意味着您需要將其反序列化爲'Dictionary ',那麼您可以輕鬆訪問第一個鍵。 – haim770

+0

檢查http://stackoverflow.com/questions/141088/what-is-the-best-way-to-iterate-over-a-dictionary-in-c – user1102901

回答

0

像這樣的事情?

int summonerLevel= (int)JObject.Parse(data).First.First["summonerLevel"]; 
+0

謝謝你,天才。我很難理解這個json解析。可能需要一些閱讀。 –