2015-06-23 2 views
0

Я хотел бы создать свой собственный сайт/приложение dota 2 stats. В принципе, я использую API паролей для сбора всех необходимых данных. Большая часть этих данных хранится в формате Json.Json to C# Объекты в .NET

Я пытался десериализовать формат, чтобы иметь данные в читаемом формате. В идеале я хочу превратить его в объекты, а затем поместить их в сетку данных, чтобы я мог правильно представить эти данные пользователю.

Кроме того, я использую перенос SteamAP WebAPI Wrapper для пакетов C# и Newtonsoft.

Public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

    SteamWebAPI.SetGlobalKey("MysteamKey"); 

    var r2 = SteamWebAPI.Game().Dota2().IDOTA2().GetHeroes().GetResponseString(RequestFormat.JSON); 

    var ds1 = Newtonsoft.Json.JsonConvert.DeserializeObject(r2); 
    RootObject hero = JsonConvert.DeserializeObject<RootObject>(r2); 


    Response.Write("Display Hero Data.. </br></br>"); 
    Response.Write(hero.result.heroes); 


    Response.Write(hero); 


    } 
} 

Вот мой класс героя: я в основном использовал этот сайт, чтобы придумать с ним - http://json2csharp.com/ Кроме того, файл Json можно найти здесь https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=2D13D618DA712015812E970165632F02&language=en_us

public class Hero 
{ 
public string name { get; set; } 
public int id { get; set; } 
public string localized_name { get; set; } 
} 

public class Result 
{ 
public List<Hero> heroes { get; set; } 
public int status { get; set; } 
public int count { get; set; } 
} 

public class RootObject 
{ 
    public Result result { get; set; } 
} 

В настоящее время, это то, что отображается в мой текущий код:

"Дисплей героя данных ..

System.Collections.Generic.List`1 [Hero] RootObject"

Это, кажется, не отображать какие-либо данные из файла JSON:/ Я уверен, что я что-то straighforward здесь отсутствует, но я просто не могу положить палец на нем :(

Мне действительно нужна помощь здесь, если я смогу получить эту работу, тогда я могу начать тянуть все другие данные, которые мне нужны. Я был бы признателен за любую помощь. Спасибо заранее.

ответ

1

Response.Write(hero.result.heroes);

Это только собирается выписать «строку» версию героев. Поскольку это объект, он просто дает вам функцию List (или Object!) .ToString() (которая отображает System.Collections.Generic.List`1 [Hero] RootObject)

Вам понадобится перебрать Коллекция. Я вижу, что вы непосредственно выписывая в ответ, который я бы отговорить, но, если вы хотите, чтобы эти выписана с ним, вы можете использовать что-то вроде этого:

foreach(var hero in hero.result.heroes) 
{ 
    Response.Write(String.Format("<p>Name: {0}, ID: {1}</p>", hero.name, hero.id) 
} 

Так это выглядит, как вы 're messing around with webforms, я предлагаю вам взглянуть на некоторые учебники о том, как его использовать (или mvc)

+0

Спасибо за ваш быстрый ответ, я получаю сообщение об ошибке «Ссылка на объект не установлена ​​в экземпляр объекта. " Я использую response.write временно, пока не смогу разобраться в этом. Затем я могу выводить результаты непосредственно в datagrid. – warboss

+0

У него уже есть объект-герой, попробуйте foreach (var hero1 in hero.result.heroes) –

+0

Я заметил, что и уже сделал изменение, сайт загружается, и именно там возникает ошибка сервера. Я думаю, мне нужно внести еще несколько изменений в код. Я полагаю, что когда var проходит через json-массив или (разбор), он делает каждый элемент в объекте правильным? Как вы думаете, мне нужен другой метод? Публичная статическая задача async? Я видел это раньше в аналогичном контексте. Я не знаю, что он делает, но я сделаю некоторое чтение/посмотрю несколько видеороликов об этом. – warboss