JSON deserialisieren / parsen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    JSON deserialisieren / parsen

    Hallo!

    Ich bekomme eine WebRequest-Antwort als JSON Format und wollte nun wissen wie man sowas deserialisieren kann?!?

    Ich hab mir json.net runter geladen und zum Projekt hinzugefügt.

    Die Antwort auf das Webrequest sieht so aus:

    Spoiler anzeigen

    XML-Quellcode

    1. {
    2. "status": "ok",
    3. "results": [{
    4. "score": 1.0,
    5. "id": "9ff43b6a-4f16-427c-93c2-92307ca505e0",
    6. "recordings": [{
    7. "duration": 639,
    8. "releasegroups": [{
    9. "type": "Album",
    10. "id": "ddaa2d4d-314e-3e7c-b1d0-f6d207f5aa2f",
    11. "title": "Before the Dawn Heals Us"
    12. }],
    13. "title": "Lower Your Eyelids to Die With the Sun",
    14. "id": "cd2e7c47-16f5-46c6-a37c-a1eb7bf599ff",
    15. "artists": [{
    16. "id": "6d7b7cd4-254b-4c25-83f6-dd20f98ceacd",
    17. "name": "M83"
    18. }]
    19. }]
    20. }]
    21. }




    Ich weiß das ich z.B. solche Properties habe:
    <JsonProperty("Album")>

    aber leider keine Ahnung!
    Hab was gelesen das man sich dafür eine Klasse schreiben soll..aber wie stell ich das an?
    Muss ich erst die Properties auslesen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Morrison“ ()

    hi,

    wenn Du schwierigkeiten hast, aus dem json-string die entsprechenden klassen abzuleiten, kann Dir das hier helfen.

    jsonutils.com/

    solange die klassen und properties den namensgebungen im json string folgen, musst Du sie nicht mit den attributen markieren. erst wenn Du bezeichnungen abänderst, ist dies erforderlich.

    hier ein beispiel mit den generierten klassen.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim json As String = File.ReadAllText("json.txt")
    4. Dim ex As Example = JsonConvert.DeserializeObject(Of Example)(json)
    5. MessageBox.Show(ex.results(0).recordings(0).title)
    6. End Sub
    7. End Class
    8. Public Class Releasegroup
    9. Public Property type As String
    10. Public Property id As String
    11. Public Property title As String
    12. End Class
    13. Public Class Artist
    14. Public Property id As String
    15. Public Property name As String
    16. End Class
    17. Public Class Recording
    18. Public Property duration As Integer
    19. Public Property releasegroups As Releasegroup()
    20. Public Property title As String
    21. Public Property id As String
    22. Public Property artists As Artist()
    23. End Class
    24. Public Class Result
    25. Public Property score As Double
    26. Public Property id As String
    27. Public Property recordings As Recording()
    28. End Class
    29. Public Class Example
    30. Public Property status As String
    31. Public Property results As Result()
    32. End Class


    arrays kannst Du mit listen ersetzen. sobald Du Dich etwas mit json beschäftigt hast, ist es kein problem mehr, die klassen selbst abzuleiten.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o