2015-08-20 41 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解析。可能需要一些阅读。 –