DeserializeObject

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Pixxxas.

    DeserializeObject

    Servus,

    kurze frage, ich habe eine JSON, die sieht so aus:

    SQL-Abfrage

    1. "steam_branches": [
    2. {
    3. "name": "public",
    4. "pwdrequired": 0,
    5. "timeupdated": "1674128106",
    6. "buildid": 10268307
    7. },
    8. {
    9. "name": "debug",
    10. "pwdrequired": 1,
    11. "timeupdated": "1565175365",
    12. "buildid": 4082533
    13. },
    14. {
    15. "name": "release",
    16. "pwdrequired": 0,
    17. "timeupdated": "1674124578",
    18. "buildid": 10347439
    19. },


    wie kann ich von debug die buildid auslesen?

    So lese ich public die buildid aus:

    VB.NET-Quellcode

    1. Dim gameinfo = JsonConvert.DeserializeObject(Of UnmodGamesRoot)(rawresp)
    2. Dim server = gameinfo.steam_branches.First.buildid


    VB.NET-Quellcode

    1. ​Public Class Steam_Branches
    2. Public Property name As String
    3. Public Property pwdrequired As Integer
    4. Public Property timeupdated As String
    5. Public Property buildid As Integer
    6. End Class
    Indem Du das Objekt hernimmst, welches Dich interessiert?

    VB.NET-Quellcode

    1. Dim server = gameinfo.steam_branches.First(Function(x) x.name = "debug").buildid

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Wenn Du Dim server = gameinfo.steam_branches.First schreibst und am Ende eine (, werden Dir 2 Vorschläge gemacht.
    1. Ohne weitere Infoangabe, dann wird das erste Element der Auflistung hergenommen.
    2. Mit predicate-Angabe, also einer Bedingung. Das erste Element der Auflistung, welches die Bedingung erfüllt, wird hergenommen. Diese Bedingung wird als anonyme Funktion formuliert. Die Function heißt anonym, weil sie keinen Namen hat. Normalerweise ist die Function-Syntax ja z.B.
    Function LäuftMomentanEinProgrammMitEinemBestimmtenNamen(GesuchterName As String) As Boolean
    Bei dem oben genannten Konstrukt hat die Function aber keinen Namen, weil er nicht gebraucht wird, weil die Function grundsätzlich für alle Elemente der Auflistung durchgearbeitet wird.
    Die Bedingung, die erfüllt werden soll, lautet: name des Auflistungselement soll "debug" sein. Wenn diese Bedingung erfüllt ist, soll dieses Element der Auflistung zurückgegeben werden. Da Du 3 Elemente in der Auflistung hast, nämlich mit den Namen public, debug und release, werden alle Elemente nacheinander durchgegangen. Beim 2. Element sieht Dein Programm: Oh, das passt, das will der Programmierer haben. Und nimmt jenes Objekt her. Das ist dann auf jeden Fall vom Typ UnmodGamesRoot, weil gameinfo.steam_branches eine Auflistung jenes Typs ist. Und daher ist auch klar, dass das zurückgegebene Objekt eine Eigenschaft buildid hat. Daher landet die buildid des ersten (und hier auch einzigen Objekts) namens "debug" in der Variable server.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.