2015-08-20 1 views
-1

Я пытаюсь разобрать информацию из объекта json, полученного через api, но в этом запросе я пытаюсь получить только одну переменную. Я просто хочу получить переменную summonerLevel.Разбор общей переменной из текста Json

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

Я пытался к нему с этим кодом, и я знаю, что если я пишу

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

он будет работать, но проблема заключается в том, что unashamedohio не статическое имя, и он будет меняйте в каждом запросе, который я делаю. Какой хороший пример, как это сделать? СООБЩЕНИЕ

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 подразумевает, что вам нужно десериализовать ее как «Словарь <строка, динамический>», тогда вы можете легко получить доступ к первому ключу. – haim770

+0

check 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. может потребоваться некоторое чтение. –

Смежные вопросы