猿问

JSON 到 ListView 中的 C#

我想制作应用程序,其中列出了我在 Steam 上的游戏。我得到了 Steam API 密钥,我得到了带有游戏数据的 JSON,但我不知道如何将其发送到我的 ListView 或类似的东西。

我试图找到一些教程,我找到了Newtonsoft.JSON,但我仍然遇到错误。

JSON 的外观:

{

   "response":{

      "game_count":27,

      "games":[

         {

            "appid":730,

            "name":"Counter-Strike: Global Offensive",

            "playtime_2weeks":986,

            "playtime_forever":30571,

            "img_icon_url":"69f7ebe2735c366c65c0b33dae00e12dc40edbe4",

            "img_logo_url":"d0595ff02f5c79fd19b06f4d6165c3fda2372820",

            "has_community_visible_stats":true,

            "playtime_windows_forever":1600,

            "playtime_mac_forever":0,

            "playtime_linux_forever":0

         },

         {

            "appid":224260,

            "name":"No More Room in Hell",

            "playtime_forever":0,

            "img_icon_url":"684de0d9c5749b5ddd52f120894fd97efd620b1d",

            "img_logo_url":"670e9aba35dc53a6eb2bc686d302d357a4939489",

            "has_community_visible_stats":true,

            "playtime_windows_forever":0,

            "playtime_mac_forever":0,

            "playtime_linux_forever":0

         },

         {

            "appid":232010,

            "name":"Euro Truck Simulator",

            "playtime_forever":11,

            "img_icon_url":"6b1bb4a4e2b1e0d85ad0b3e2d6d15a0258aa43a0",

            "img_logo_url":"fa3886315d9586671506c7149c1e4ecae653ce13",

            "has_community_visible_stats":true,

            "playtime_windows_forever":0,

            "playtime_mac_forever":0,

            "playtime_linux_forever":0

         }

      ]

   }

}

我尝试过这个,但它不起作用。


json = wc.DownloadString("http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=D4718FA8ED43C531523CF79310BE52FE&steamid=76561198440001695&include_appinfo=1");

dynamic results = JsonConvert.DeserializeObject(json);

var appid = results.appid();

我收到错误:


$exception {“组件 ”Newtonsoft.Json.Linq.JObject“ 不包含定义 ”appid“.”}Microsoft.CSharp.RuntimeBinder.RuntimeBinderException


开满天机
浏览 162回答 1
1回答

jeck猫

应使用 Newtonsoft 的泛型反序列化器方法反序列化此字符串。尝试创建一个新类:&nbsp;public partial class GameResponse{&nbsp; &nbsp; [JsonProperty("response")]&nbsp; &nbsp; public Response Response { get; set; }}public partial class Response{&nbsp; &nbsp; [JsonProperty("game_count")]&nbsp; &nbsp; public long GameCount { get; set; }&nbsp; &nbsp; [JsonProperty("games")]&nbsp; &nbsp; public Game[] Games { get; set; }}public partial class Game{&nbsp; &nbsp; [JsonProperty("appid")]&nbsp; &nbsp; public long Appid { get; set; }&nbsp; &nbsp; [JsonProperty("name")]&nbsp; &nbsp; public string Name { get; set; }&nbsp; &nbsp; [JsonProperty("playtime_2weeks", NullValueHandling = NullValueHandling.Ignore)]&nbsp; &nbsp; public long? Playtime2Weeks { get; set; }&nbsp; &nbsp; [JsonProperty("playtime_forever")]&nbsp; &nbsp; public long PlaytimeForever { get; set; }&nbsp; &nbsp; [JsonProperty("img_icon_url")]&nbsp; &nbsp; public string ImgIconUrl { get; set; }&nbsp; &nbsp; [JsonProperty("img_logo_url")]&nbsp; &nbsp; public string ImgLogoUrl { get; set; }&nbsp; &nbsp; [JsonProperty("has_community_visible_stats")]&nbsp; &nbsp; public bool HasCommunityVisibleStats { get; set; }&nbsp; &nbsp; [JsonProperty("playtime_windows_forever")]&nbsp; &nbsp; public long PlaytimeWindowsForever { get; set; }&nbsp; &nbsp; [JsonProperty("playtime_mac_forever")]&nbsp; &nbsp; public long PlaytimeMacForever { get; set; }&nbsp; &nbsp; [JsonProperty("playtime_linux_forever")]&nbsp; &nbsp; public long PlaytimeLinuxForever { get; set; }}然后使用:var json = wc.DownloadString("http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=D4718FA8ED43C531523CF79310BE52FE&steamid=76561198440001695&include_appinfo=1");var results = JsonConvert.DeserializeObject<GameResponse>(json);小提琴:https://dotnetfiddle.net/Nf2LdB
随时随地看视频慕课网APP
我要回答