【问题标题】:How to parse Steam's JSON response using VB.Net如何使用 VB.Net 解析 Steam 的 JSON 响应
【发布时间】:2017-04-12 18:04:01
【问题描述】:

编辑:

解释一下我最终需要什么:

我们正在寻找 Steam 告诉我们的有关特定应用的信息,例如“Dead by Daylight”。

Dim address As String = "http://store.steampowered.com/api/appdetails?appids=381210&filters=basic"

Dim link As WebClient = New WebClient()

Dim info As String = link.DownloadString(address)

因此有以下类似 JSON 的服务器答案。

{"381210":{"success":true,"data":{"type":"game","name":"Dead by Daylight","steam_appid":381210,"required_age":0,"is_free":false,"dlc":[492140,509060,530710,530711,554380],"detailed_description":"<h1>Digitale Deluxe-Edition<\/h1><p><img src=\"http:\/\/cdn.akamai.steamstatic.com\/steam\/apps\/381210\/extras\/dlx_1.jpg?t=1480018883\">\r<br>The Deluxe Edition includes the base game, official soundtrack, digital art book, two masks for PAYDAY 2.<\/p><br><h1>\u00dcber das Spiel<\/h1><strong>Der Tod ist keine Zuflucht.<\/strong>\r<br>\r<br>Dead by Daylight ist ein Multiplayer-Horrorspiel (4vs1), in dem ein Spieler die Rolle eines wilden Killers \u00fcbernimmt und die anderen vier Spieler als \u00dcberlebende spielen, die versuchen, dem Killer zu entkommen sowie Gefangenschaft, Folter und T\u00f6tung zu entgehen. \r<br>\r<br>Die \u00dcberlebenden spielen in der Dritte-Person-Perspektive und haben den Vorteil, einen besseren \u00dcberblick \u00fcber die Situation zu haben. Der Killer spielt in der Ich-Perspektive und ist mehr auf seine Beute fokusiert.\r<br>\r<br>Das Ziel der \u00dcberlebenden bei jedem Zusammentreffen ist es, dem T\u00f6tungsgebiet zu entkommen, ohne vom Killer gefangen zu werden \u2013 etwas, das sich leichter anh\u00f6rt, als es ist, vor allem, wenn sich die Umgebung jedes Mal, wenn du spielst, ver\u00e4ndert.\r<br>\r<br>Mehr Informationen \u00fcber das Spiel sind unter <a href=\"https:\/\/steamcommunity.com\/linkfilter\/?url=http:\/\/www.deadbydaylight.com\" target=\"_blank\" rel=\"noreferrer\"  >http:\/\/www.deadbydaylight.com<\/a> verf\u00fcgbar.<h2 class=\"bb_tag\">Hauptmerkmale<\/h2>\r\u2022\t<strong>\u00dcberlebt gemeinsam... Oder auch nicht<\/strong> - \u00dcberlebende k\u00f6nnen entweder mit den anderen kooperieren oder eigenn\u00fctzig sein. Deine \u00dcberlebenschance wird variieren, je nachdem, ob ihr als Team zusammenarbeitet oder du allein loslegst. Wird es dir gelingen, den Killer zu \u00fcberlisten und seinen T\u00f6tungsgebiet zu entkommen ?\r<br>\r<br>\u2022\t<strong>Wo bin ich? <\/strong> - Jedes Level ist verfahrensorientiert angelegt, daher wei\u00dft du nie, was dich erwartet. Zuf\u00e4llige Spawnpunkte bedeuten, dass du dich niemals sicher f\u00fchlen wirst, da sich die Welt und ihre Gefahren jedes Mal, wenn du spielst, ver\u00e4ndern.\r<br>\r<br>\u2022\t<strong>Ein Festmahl f\u00fcr Killer <\/strong> - Dead by Daylight sch\u00f6pft aus allen Ecken der Horrowelt. Als Killer kannst du alles spielen, vom m\u00e4chtigen Zers\u00e4bler bis zum furchteinfl\u00f6\u00dfenden, paranormalen Entitus.\r<br>\r<br>\u2022\t<strong>Tiefer und tiefer <\/strong> - Jeder Killer und \u00dcberlebender hat sein eigenes, tiefes Fortschrittssystem und jede Menge Freischaltbares, das auf deine pers\u00f6nliche Strategie angepasst werden kann. Erfahrung, F\u00e4higkeiten und Verst\u00e4ndnis der Umgebung sind der Schl\u00fcssel zum Jagen oder \u00dcberlisten des Killers.\r<br>\r<br>\u2022\t<strong>Reale Spieler, reale Angst <\/strong> - Die verfahrensabh\u00e4ngigen Levels und wirkliche, menschliche Reaktionen bis hin zum Horror, machen jeden Spielabschnitt zu einem unerwarteten Szenario. Du kannst nie vorher sagen, wie es ausgehen wird. Ambiente, Musik und entspannte Umgebungen vereinen sich zu einer angsteinfl\u00f6\u00dfenden Erfahrung. Vielleicht k\u00f6nntest du mit gen\u00fcgend Zeit sogar herausfinden, was sich im Nebel verbirgt.","about_the_game":"<strong>Der Tod ist keine Zuflucht.<\/strong>\r<br>\r<br>Dead by Daylight ist ein Multiplayer-Horrorspiel (4vs1), in dem ein Spieler die Rolle eines wilden Killers \u00fcbernimmt und die anderen vier Spieler als \u00dcberlebende spielen, die versuchen, dem Killer zu entkommen sowie Gefangenschaft, Folter und T\u00f6tung zu entgehen. \r<br>\r<br>Die \u00dcberlebenden spielen in der Dritte-Person-Perspektive und haben den Vorteil, einen besseren \u00dcberblick \u00fcber die Situation zu haben. Der Killer spielt in der Ich-Perspektive und ist mehr auf seine Beute fokusiert.\r<br>\r<br>Das Ziel der \u00dcberlebenden bei jedem Zusammentreffen ist es, dem T\u00f6tungsgebiet zu entkommen, ohne vom Killer gefangen zu werden \u2013 etwas, das sich leichter anh\u00f6rt, als es ist, vor allem, wenn sich die Umgebung jedes Mal, wenn du spielst, ver\u00e4ndert.\r<br>\r<br>Mehr Informationen \u00fcber das Spiel sind unter <a href=\"https:\/\/steamcommunity.com\/linkfilter\/?url=http:\/\/www.deadbydaylight.com\" target=\"_blank\" rel=\"noreferrer\"  >http:\/\/www.deadbydaylight.com<\/a> verf\u00fcgbar.<h2 class=\"bb_tag\">Hauptmerkmale<\/h2>\r\u2022\t<strong>\u00dcberlebt gemeinsam... Oder auch nicht<\/strong> - \u00dcberlebende k\u00f6nnen entweder mit den anderen kooperieren oder eigenn\u00fctzig sein. Deine \u00dcberlebenschance wird variieren, je nachdem, ob ihr als Team zusammenarbeitet oder du allein loslegst. Wird es dir gelingen, den Killer zu \u00fcberlisten und seinen T\u00f6tungsgebiet zu entkommen ?\r<br>\r<br>\u2022\t<strong>Wo bin ich? <\/strong> - Jedes Level ist verfahrensorientiert angelegt, daher wei\u00dft du nie, was dich erwartet. Zuf\u00e4llige Spawnpunkte bedeuten, dass du dich niemals sicher f\u00fchlen wirst, da sich die Welt und ihre Gefahren jedes Mal, wenn du spielst, ver\u00e4ndern.\r<br>\r<br>\u2022\t<strong>Ein Festmahl f\u00fcr Killer <\/strong> - Dead by Daylight sch\u00f6pft aus allen Ecken der Horrowelt. Als Killer kannst du alles spielen, vom m\u00e4chtigen Zers\u00e4bler bis zum furchteinfl\u00f6\u00dfenden, paranormalen Entitus.\r<br>\r<br>\u2022\t<strong>Tiefer und tiefer <\/strong> - Jeder Killer und \u00dcberlebender hat sein eigenes, tiefes Fortschrittssystem und jede Menge Freischaltbares, das auf deine pers\u00f6nliche Strategie angepasst werden kann. Erfahrung, F\u00e4higkeiten und Verst\u00e4ndnis der Umgebung sind der Schl\u00fcssel zum Jagen oder \u00dcberlisten des Killers.\r<br>\r<br>\u2022\t<strong>Reale Spieler, reale Angst <\/strong> - Die verfahrensabh\u00e4ngigen Levels und wirkliche, menschliche Reaktionen bis hin zum Horror, machen jeden Spielabschnitt zu einem unerwarteten Szenario. Du kannst nie vorher sagen, wie es ausgehen wird. Ambiente, Musik und entspannte Umgebungen vereinen sich zu einer angsteinfl\u00f6\u00dfenden Erfahrung. Vielleicht k\u00f6nntest du mit gen\u00fcgend Zeit sogar herausfinden, was sich im Nebel verbirgt.","short_description":"Dead by Daylight ist ein Multiplayer-Horrorspiel (4vs1), in dem ein Spieler die Rolle eines wilden Killers \u00fcbernimmt und die anderen vier Spieler als \u00dcberlebende spielen, die versuchen, dem Killer zu entkommen sowie Gefangenschaft und T\u00f6tung zu entgehen.","supported_languages":"Englisch<strong>*<\/strong>, Franz\u00f6sisch, Italienisch, Deutsch, Spanisch, Russisch, Chinesisch (vereinfacht)<br><strong>*<\/strong>Sprachen mit voller Audiounterst\u00fctzung","header_image":"http:\/\/cdn.akamai.steamstatic.com\/steam\/apps\/381210\/header.jpg?t=1480018883","website":"http:\/\/www.deadbydaylight.com","pc_requirements":{"minimum":"<strong>Minimum:<\/strong>\r<br><ul class=\"bb_ul\"><li><strong>Betriebssystem:<\/strong> 64-bit Betriebssystem (Windows 7, Windows 8 &amp; Windows 8.1)\r<br><\/li><li><strong>Prozessor:<\/strong> Intel Core i3-4170 or AMD FX-8120\r<br><\/li><li><strong>Arbeitsspeicher:<\/strong> 8 GB RAM\r<br><\/li><li><strong>Grafik:<\/strong> DX11 Kompatible GeForce GTX 460 1GB oder AMD HD 6850 1GB  o\tDirectX: Version 11\r<br><\/li><li><strong>DirectX:<\/strong> Version 11\r<br><\/li><li><strong>Netzwerk:<\/strong> Breitband-Internetverbindung\r<br><\/li><li><strong>Speicherplatz:<\/strong> 15 GB verf\u00fcgbarer Speicherplatz\r<br><\/li><li><strong>Soundkarte:<\/strong> DX11 kompatibel\r<\/li><\/ul>","recommended":"<strong>Empfohlen:<\/strong>\r<br><ul class=\"bb_ul\"><li><strong>Betriebssystem:<\/strong> 64-bit Betriebssystem (Windows 7, Windows 8 &amp; Windows 8.1)\r<br><\/li><li><strong>Prozessor:<\/strong> Intel Core i3-4170 or AMD FX-8300 oder h\u00f6her\r<br><\/li><li><strong>Arbeitsspeicher:<\/strong> 8 GB RAM\r<br><\/li><li><strong>Grafik:<\/strong> DX11 Kompatible GeForce 760 or AMD HD 8800 oder h\u00f6her mit 4GB RAM\r<br><\/li><li><strong>DirectX:<\/strong> Version 11\r<br><\/li><li><strong>Netzwerk:<\/strong> Breitband-Internetverbindung\r<br><\/li><li><strong>Speicherplatz:<\/strong> 15 GB verf\u00fcgbarer Speicherplatz\r<br><\/li><li><strong>Soundkarte:<\/strong> DX11 kompatibel\r<\/li><\/ul>"},"mac_requirements":[],"linux_requirements":[],"legal_notice":"Dead by Daylight ist eine Handelsmarke von Behaviour Interactive Inc. Alle anderen Handelsmarken sind Eigentum ihrer jeweiligen Inhaber. Entwickelt von Behaviour Digital und publiziert von Starbreeze Studios. Alle Rechte vorbehalten."}}}

最后我想反序列化它,以便每个属性都可以作为字符串访问

喜欢

Dim apptype as String = "game"
Dim appname as String = "Dead by Daylight"

【问题讨论】:

  • a) 请停止在您的标题中添加标签 b) 您已删除帖子上的 json 包含更多数据,您确定是这样吗? c) 你不应该删除被否决的帖子 - 它仍然会导致限制和/或禁止 d) 你不能反序列化到 Object 你需要一个类,或者如果你只想要一些东西,你可以解析它。研究相关下的链接
  • ...NET JavaScriptSerializer 也不适用于桌面应用程序,Microsoft 建议使用 JSON.NET 进行序列化和反序列化。这些是 MSDN JavaScriptSerializer 页面上的第一句话。
  • 游戏可以是静态的吗?答案会有很大差异,具体取决于您是否已经知道 381210 号码,或者是否需要动态查找
  • 我知道答案取决于我们选择的appid。这只是一个例子。制作一般不会有问题。

标签: json vb.net parsing steam


【解决方案1】:

为了帮助可视化你需要构建的类结构,你可以use这个工具

我假设你需要让它是动态的(请原谅我的 hack,因为我不熟悉 VB 和 JSON)所以我将 381210 属性替换为静态 id 属性名称,以便我们的类可以更轻松地反映数据。

首先我们获取数据 (JSON) 解析它(是的解析),然后我们将其反序列化为我们的类属性,以便我们以后可以轻松访问数据。

将此部分放入您的事件中(例如单击按钮)

   'This is your JSON string from STEAM
    Dim a As String = "{""381210"":{""success"":true,""data"":{""type"":""game"",""name"":""Dead by Daylight"",""steam_appid"":381210,""required_age"":0,""is_free"":false,""dlc"":[492140,509060,530710,530711,554380],""detailed_description"":""<h1>Digitale Deluxe-Edition<\/h1><p><img src=\""http:\/\/cdn.akamai.steamstatic.com\/steam\/apps\/381210\/extras\/dlx_1.jpg?t=1480018883\"">\r<br>The Deluxe Edition includes the base game, official soundtrack, digital art book, two masks for PAYDAY 2.<\/p><br><h1>\u00dcber das Spiel<\/h1><strong>Der Tod ist keine Zuflucht.<\/strong>\r<br>\r<br>Dead by Daylight ist ein Multiplayer-Horrorspiel (4vs1), in dem ein Spieler die Rolle eines wilden Killers \u00fcbernimmt und die anderen vier Spieler als \u00dcberlebende spielen, die versuchen, dem Killer zu entkommen sowie Gefangenschaft, Folter und T\u00f6tung zu entgehen. \r<br>\r<br>Die \u00dcberlebenden spielen in der Dritte-Person-Perspektive und haben den Vorteil, einen besseren \u00dcberblick \u00fcber die Situation zu haben. Der Killer spielt in der Ich-Perspektive und ist mehr auf seine Beute fokusiert.\r<br>\r<br>Das Ziel der \u00dcberlebenden bei jedem Zusammentreffen ist es, dem T\u00f6tungsgebiet zu entkommen, ohne vom Killer gefangen zu werden \u2013 etwas, das sich leichter anh\u00f6rt, als es ist, vor allem, wenn sich die Umgebung jedes Mal, wenn du spielst, ver\u00e4ndert.\r<br>\r<br>Mehr Informationen \u00fcber das Spiel sind unter <a href=\""https:\/\/steamcommunity.com\/linkfilter\/?url=http:\/\/www.deadbydaylight.com\"" target=\""_blank\"" rel=\""noreferrer\""  >http:\/\/www.deadbydaylight.com<\/a> verf\u00fcgbar.<h2 class=\""bb_tag\"">Hauptmerkmale<\/h2>\r\u2022\t<strong>\u00dcberlebt gemeinsam... Oder auch nicht<\/strong> - \u00dcberlebende k\u00f6nnen entweder mit den anderen kooperieren oder eigenn\u00fctzig sein. Deine \u00dcberlebenschance wird variieren, je nachdem, ob ihr als Team zusammenarbeitet oder du allein loslegst. Wird es dir gelingen, den Killer zu \u00fcberlisten und seinen T\u00f6tungsgebiet zu entkommen ?\r<br>\r<br>\u2022\t<strong>Wo bin ich? <\/strong> - Jedes Level ist verfahrensorientiert angelegt, daher wei\u00dft du nie, was dich erwartet. Zuf\u00e4llige Spawnpunkte bedeuten, dass du dich niemals sicher f\u00fchlen wirst, da sich die Welt und ihre Gefahren jedes Mal, wenn du spielst, ver\u00e4ndern.\r<br>\r<br>\u2022\t<strong>Ein Festmahl f\u00fcr Killer <\/strong> - Dead by Daylight sch\u00f6pft aus allen Ecken der Horrowelt. Als Killer kannst du alles spielen, vom m\u00e4chtigen Zers\u00e4bler bis zum furchteinfl\u00f6\u00dfenden, paranormalen Entitus.\r<br>\r<br>\u2022\t<strong>Tiefer und tiefer <\/strong> - Jeder Killer und \u00dcberlebender hat sein eigenes, tiefes Fortschrittssystem und jede Menge Freischaltbares, das auf deine pers\u00f6nliche Strategie angepasst werden kann. Erfahrung, F\u00e4higkeiten und Verst\u00e4ndnis der Umgebung sind der Schl\u00fcssel zum Jagen oder \u00dcberlisten des Killers.\r<br>\r<br>\u2022\t<strong>Reale Spieler, reale Angst <\/strong> - Die verfahrensabh\u00e4ngigen Levels und wirkliche, menschliche Reaktionen bis hin zum Horror, machen jeden Spielabschnitt zu einem unerwarteten Szenario. Du kannst nie vorher sagen, wie es ausgehen wird. Ambiente, Musik und entspannte Umgebungen vereinen sich zu einer angsteinfl\u00f6\u00dfenden Erfahrung. Vielleicht k\u00f6nntest du mit gen\u00fcgend Zeit sogar herausfinden, was sich im Nebel verbirgt."",""about_the_game"":""<strong>Der Tod ist keine Zuflucht.<\/strong>\r<br>\r<br>Dead by Daylight ist ein Multiplayer-Horrorspiel (4vs1), in dem ein Spieler die Rolle eines wilden Killers \u00fcbernimmt und die anderen vier Spieler als \u00dcberlebende spielen, die versuchen, dem Killer zu entkommen sowie Gefangenschaft, Folter und T\u00f6tung zu entgehen. \r<br>\r<br>Die \u00dcberlebenden spielen in der Dritte-Person-Perspektive und haben den Vorteil, einen besseren \u00dcberblick \u00fcber die Situation zu haben. Der Killer spielt in der Ich-Perspektive und ist mehr auf seine Beute fokusiert.\r<br>\r<br>Das Ziel der \u00dcberlebenden bei jedem Zusammentreffen ist es, dem T\u00f6tungsgebiet zu entkommen, ohne vom Killer gefangen zu werden \u2013 etwas, das sich leichter anh\u00f6rt, als es ist, vor allem, wenn sich die Umgebung jedes Mal, wenn du spielst, ver\u00e4ndert.\r<br>\r<br>Mehr Informationen \u00fcber das Spiel sind unter <a href=\""https:\/\/steamcommunity.com\/linkfilter\/?url=http:\/\/www.deadbydaylight.com\"" target=\""_blank\"" rel=\""noreferrer\""  >http:\/\/www.deadbydaylight.com<\/a> verf\u00fcgbar.<h2 class=\""bb_tag\"">Hauptmerkmale<\/h2>\r\u2022\t<strong>\u00dcberlebt gemeinsam... Oder auch nicht<\/strong> - \u00dcberlebende k\u00f6nnen entweder mit den anderen kooperieren oder eigenn\u00fctzig sein. Deine \u00dcberlebenschance wird variieren, je nachdem, ob ihr als Team zusammenarbeitet oder du allein loslegst. Wird es dir gelingen, den Killer zu \u00fcberlisten und seinen T\u00f6tungsgebiet zu entkommen ?\r<br>\r<br>\u2022\t<strong>Wo bin ich? <\/strong> - Jedes Level ist verfahrensorientiert angelegt, daher wei\u00dft du nie, was dich erwartet. Zuf\u00e4llige Spawnpunkte bedeuten, dass du dich niemals sicher f\u00fchlen wirst, da sich die Welt und ihre Gefahren jedes Mal, wenn du spielst, ver\u00e4ndern.\r<br>\r<br>\u2022\t<strong>Ein Festmahl f\u00fcr Killer <\/strong> - Dead by Daylight sch\u00f6pft aus allen Ecken der Horrowelt. Als Killer kannst du alles spielen, vom m\u00e4chtigen Zers\u00e4bler bis zum furchteinfl\u00f6\u00dfenden, paranormalen Entitus.\r<br>\r<br>\u2022\t<strong>Tiefer und tiefer <\/strong> - Jeder Killer und \u00dcberlebender hat sein eigenes, tiefes Fortschrittssystem und jede Menge Freischaltbares, das auf deine pers\u00f6nliche Strategie angepasst werden kann. Erfahrung, F\u00e4higkeiten und Verst\u00e4ndnis der Umgebung sind der Schl\u00fcssel zum Jagen oder \u00dcberlisten des Killers.\r<br>\r<br>\u2022\t<strong>Reale Spieler, reale Angst <\/strong> - Die verfahrensabh\u00e4ngigen Levels und wirkliche, menschliche Reaktionen bis hin zum Horror, machen jeden Spielabschnitt zu einem unerwarteten Szenario. Du kannst nie vorher sagen, wie es ausgehen wird. Ambiente, Musik und entspannte Umgebungen vereinen sich zu einer angsteinfl\u00f6\u00dfenden Erfahrung. Vielleicht k\u00f6nntest du mit gen\u00fcgend Zeit sogar herausfinden, was sich im Nebel verbirgt."",""short_description"":""Dead by Daylight ist ein Multiplayer-Horrorspiel (4vs1), in dem ein Spieler die Rolle eines wilden Killers \u00fcbernimmt und die anderen vier Spieler als \u00dcberlebende spielen, die versuchen, dem Killer zu entkommen sowie Gefangenschaft und T\u00f6tung zu entgehen."",""supported_languages"":""Englisch<strong>*<\/strong>, Franz\u00f6sisch, Italienisch, Deutsch, Spanisch, Russisch, Chinesisch (vereinfacht)<br><strong>*<\/strong>Sprachen mit voller Audiounterst\u00fctzung"",""header_image"":""http:\/\/cdn.akamai.steamstatic.com\/steam\/apps\/381210\/header.jpg?t=1480018883"",""website"":""http:\/\/www.deadbydaylight.com"",""pc_requirements"":{""minimum"":""<strong>Minimum:<\/strong>\r<br><ul class=\""bb_ul\""><li><strong>Betriebssystem:<\/strong> 64-bit Betriebssystem (Windows 7, Windows 8 &amp; Windows 8.1)\r<br><\/li><li><strong>Prozessor:<\/strong> Intel Core i3-4170 or AMD FX-8120\r<br><\/li><li><strong>Arbeitsspeicher:<\/strong> 8 GB RAM\r<br><\/li><li><strong>Grafik:<\/strong> DX11 Kompatible GeForce GTX 460 1GB oder AMD HD 6850 1GB  o\tDirectX: Version 11\r<br><\/li><li><strong>DirectX:<\/strong> Version 11\r<br><\/li><li><strong>Netzwerk:<\/strong> Breitband-Internetverbindung\r<br><\/li><li><strong>Speicherplatz:<\/strong> 15 GB verf\u00fcgbarer Speicherplatz\r<br><\/li><li><strong>Soundkarte:<\/strong> DX11 kompatibel\r<\/li><\/ul>"",""recommended"":""<strong>Empfohlen:<\/strong>\r<br><ul class=\""bb_ul\""><li><strong>Betriebssystem:<\/strong> 64-bit Betriebssystem (Windows 7, Windows 8 &amp; Windows 8.1)\r<br><\/li><li><strong>Prozessor:<\/strong> Intel Core i3-4170 or AMD FX-8300 oder h\u00f6her\r<br><\/li><li><strong>Arbeitsspeicher:<\/strong> 8 GB RAM\r<br><\/li><li><strong>Grafik:<\/strong> DX11 Kompatible GeForce 760 or AMD HD 8800 oder h\u00f6her mit 4GB RAM\r<br><\/li><li><strong>DirectX:<\/strong> Version 11\r<br><\/li><li><strong>Netzwerk:<\/strong> Breitband-Internetverbindung\r<br><\/li><li><strong>Speicherplatz:<\/strong> 15 GB verf\u00fcgbarer Speicherplatz\r<br><\/li><li><strong>Soundkarte:<\/strong> DX11 kompatibel\r<\/li><\/ul>""},""mac_requirements"":[],""linux_requirements"":[],""legal_notice"":""Dead by Daylight ist eine Handelsmarke von Behaviour Interactive Inc. Alle anderen Handelsmarken sind Eigentum ihrer jeweiligen Inhaber. Entwickelt von Behaviour Digital und publiziert von Starbreeze Studios. Alle Rechte vorbehalten.""}}}"
    'Pass the string to my parsing function (note this is parsing, below is called deserialization) 
    a = editJson(a)
    'Create an object using Newtonsoft's Json, set Example (class) varaibles using the Json data (a)
    Dim obj = JsonConvert.DeserializeObject(Of Example)(a)
    'Show a message box with one of the object's names from the JSon class.
    MsgBox(obj.id.data.name)

这里我们需要解析出数字381210,并将其替换为我们的id属性名

Function editJson(ByVal str As String) As String
    'Get the first occurance of "
    Dim first As Integer = str.IndexOf("""")
    'Get the next occurance of " (3 is the starting offset)
    Dim last As Integer = str.IndexOf("""", 3)
    'Remove everything inside the first set of quotes
    str = str.Remove(first + 1, last - 2)
    'Insert ID where your number used to be (we need to do this because our JSon converter is looking for the 381210 as a proprety, but we can't easily assign a dynamic property, so instead we parse out the property name and replace it with our ID [note this id is also duplicated data as it shows up as the steam_appid]
    Return str.Insert(2, "id")
End Function

最后,我们需要让我们的类结构与我们收到的 JSON 匹配,可以这样完成:

Public Class PcRequirements
    Public Property minimum As String
    Public Property recommended As String
End Class

Public Class Data
    Public Property type As String
    Public Property name As String
    Public Property steam_appid As Integer
    Public Property required_age As Integer
    Public Property is_free As Boolean
    Public Property dlc As Integer()
    Public Property detailed_description As String
    Public Property about_the_game As String
    Public Property short_description As String
    Public Property supported_languages As String
    Public Property header_image As String
    Public Property website As String
    Public Property pc_requirements As PcRequirements
    Public Property mac_requirements As Object()
    Public Property linux_requirements As Object()
    Public Property legal_notice As String
End Class

Public Class Game
    Public Property success As Boolean
    Public Property data As Data
End Class

Public Class Example
    Public Property id As Game
End Class

另外,请查看this 帖子以了解为什么类结构必须匹配。另请参阅this 帖子以获取有关制作类结构的更多信息。

值得注意的是,在这些术语中,解析和反序列化之间的区别在于,解析更像是编写一个循环来遍历和读取数据,在每个新的属性类型处将其拆分为一个数组;另一方面,反序列化我们将它直接放入一个对象(类结构)中,这是一个更具体的术语(这就是为什么 cmets 中存在一些混淆)this post 简要解释了差异

【讨论】:

  • 这对于对 JSON 有所了解但肯定 OP 需要知道要使用的类的人可能很有用。即使使用机器人,它也需要修复,因为381210 将是非法的类/属性名称。此外,尽管有标题,但问题是如何to parse the following input and get only "Dead by Daylight"。链接到另一个答案并粘贴它不是很有帮助作为答案
  • 在这种情况下应该回答正文中的问题还是标题中的问题?我怀疑 OP 不知道在这种情况下反序列化和解析之间的区别。
  • 六到五,然后选择 em IMO。我可能已经展示了如何解析,因为他/她以前的帖子(现已删除)也明确表示他们只想要一条信息。对于 JSON 新手来说,“难”的部分是制作课程,这对此无济于事。 (一段时间后,您可以知道何时需要粘贴此代码的答案)
猜你喜欢
  • 2014-01-10
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多