【问题标题】:Json to c# Objects in .NETJson 到 .NET 中的 c# 对象
【发布时间】:2015-06-23 19:21:49
【问题描述】:

我一直想制作自己的 dota 2 统计网站/应用程序。基本上,我使用 Steam API 来收集所有基本数据。这些数据大部分以 Json 格式存储。

我一直在尝试对格式进行反序列化,以便我可以将数据设为可读格式。理想情况下,我想将其转换为对象,然后将它们放入数据网格中,这样我就可以将这些数据正确地呈现给用户。

此外,我正在使用 Portable Steam WebAPI Wrapper for 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 文件中的任何数据:/ 我确定我在这里遗漏了一些直截了当的东西,但我就是不能指望它:(

我在这里真的需要一些帮助,如果我能做到这一点,那么我可以开始提取我需要的所有其他数据。我将不胜感激任何帮助。 提前致谢。

【问题讨论】:

    标签: c# asp.net json steam-web-api


    【解决方案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)
    }
    

    既然你似乎在搞乱网络表单,我建议你看看一些关于如何使用它(或 mvc)的教程

    【讨论】:

    • 感谢您的快速响应,我收到错误消息“对象引用未设置为对象的实例。”我只是暂时使用 response.write,直到我可以解决这个问题。然后我可以将结果直接输出到数据网格中。
    • 他已经有一个英雄对象,试试 foreach(var hero1 in hero.result.heroes)
    • 我注意到,并且已经进行了更改,网站加载,这就是服务器错误的来源。我想我需要对代码进行更多更改。我认为当 var 遍历 json 数组时,或者(解析通过)它会将每个元素变成一个对象,对吗?你认为我需要另一种方法吗?公共静态异步任务?我以前在类似的情况下见过这个。我不知道它的作用,但我会阅读/观看一些有关它的视频。
    • 两件事:您已经在帖子中包含了您的 API 密钥,并且我从控制台应用程序进行了一些简单的测试,并且能够枚举您发布的链接中的 json,其结构类似于我在答案中显示。
    • 好吧,我回到家并决定再试一次,我想我会在控制台应用程序中尝试,同样的事情,控制台会关闭..无论如何,我决定回到webform,然后再试一次,它就开始工作了!我简直不敢相信。我早些时候对自己想,一切都是有意义的,它应该起作用。我仍然不知道为什么会出现这些错误 - 奇怪,但是非常感谢 willaien,我非常感谢您的帮助。我将阅读更多关于这些东西的内容,这样我就可以牢牢掌握它并成为一个更好的程序员。
    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多