Struktur in JSON-String umwandeln

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Struktur in JSON-String umwandeln

    Hallo,

    ich möchte eine komplexe Struktur in einen JSON-String umwandeln.
    Als JSONConverter nutze ich "Newtonsoft.JSON"

    hier ein Auszug meiner Struktur:

    VB.NET-Quellcode

    1. Structure Programme
    2. Dim name as String
    3. Dim blocks as list (of SimaticExport.Baustein)
    4. End Structure
    5. Structure Programtojson
    6. Dim export_program As String
    7. Dim export_version As String
    8. Dim project As String
    9. Dim subproject As String
    10. Dim line As String
    11. Dim station As String
    12. Dim manufacturer As String
    13. Dim eq_nummer As String
    14. Dim plc_project_name As String
    15. Dim export_complete As Integer
    16. Dim program As List(Of Programme) 'Liste beinhaltet Struktur mit Listenelement
    17. End Structure
    18. 'JsonConvert gibt {} zurück
    19. Dim json as String = JsonConvert.SerializeObject(Programtojson)


    Wenn ich jedoch in der Struktur "Programtojson" das "program" nicht als Listenelement deklariere, sondern ein einzelnes Listenelementeinfüge, erhalte ich einen String im JsonFormat.

    VB.NET-Quellcode

    1. Structure Programtojson
    2. Dim export_program As String
    3. Dim export_version As String
    4. Dim project As String
    5. Dim subproject As String
    6. Dim line As String
    7. Dim station As String
    8. Dim manufacturer As String
    9. Dim eq_nummer As String
    10. Dim plc_project_name As String
    11. Dim export_complete As Integer
    12. Dim program As List(Of Programme) 'Liste beinhaltet Struktur mit Listenelement
    13. dim blocks as list(of SimaticExport.Baustein) 'Liste Bausteinattributen
    14. End Structure
    15. 'JsonConvert gibt {JSONSTRING} zurück
    16. Dim json as String = JsonConvert.SerializeObject(Programtojson)


    Mache ich etwas falsch oder muss ich die Objekte einzeln konvertieren und danach zusammensetzen?

    @RodFromGermany
    Danke für den CodeHinweis. Habe den Code angepasst.

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

    @stollenkroll Willkommen im Forum. :thumbup:
    Was genau ist jsonExportDaten?
    Kann es sein, dass Newtonsoft.JSON nur Instanzen von Klassen, nicht aber Strukturen serialisieren kann?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

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

    Ich habe die Struktur auch schon als Klasse definiert. das funktioniert auch nicht.
    Die Grenzen von NewtonSoft.JSON kenne ich leider nicht.
    Ich habe mir die Beispielbeschreibungen von NewtonSoft.JSON schon angesehen, und habe daraus meinen Code abgeleitet.
    Hallo @stollenkroll

    Es klappt mit einer Structure genauso.

    Du machst nur den Fehler (zumindest im gezeigten Code) das du die Klasse selbst wandeln möchtest anstatt eine Instanz dieser.

    Also statt:

    VB.NET-Quellcode

    1. Dim json as String = JsonConvert.SerializeObject(Programtojson)


    sollte folgendes zum Zielen führen:

    VB.NET-Quellcode

    1. Dim test As New Programtojson
    2. Dim json as String = JsonConvert.SerializeObject(test)


    Nebentipp: Per Annotation kannst du bestimmen wie die Properties im generierten Json String benamst werden sollen. Kann sehr hilfreich sein.

    VB.NET-Quellcode

    1. <JsonProperty("MyLine")>
    2. Dim line As String


    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Nofear23m Das hatter danach geändert, deswegen frug ich:

    RodFromGermany schrieb:

    Was genau ist jsonExportDaten?

    Also leber @stollenkroll Lass das nachträgliche Editieren von Posts und beantworte lieber die Fragen, die Dir gestellt werden. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay ich habe es selbst schon herrausgefunden.
    und zwar genau dass, was @Nofear23m meinte:

    Nofear23m schrieb:

    Du machst nur den Fehler (zumindest im gezeigten Code) das du die Klasse selbst wandeln möchtest anstatt eine Instanz dieser.

    Ich habe meinen Code jetzt umgebaut, so dass es funktioniert.
    Und vielen Dank für den Tip - Ich werden versuchen ihn einzusetzen



    *Vollzitat entfernt* ~fufu

    jsonExportDaten soll am Ende alle von mir ausgelesenen Daten eines Siemens Step7-Classic-Projektes haben.
    z.B. Projektierte Hardware und seine Eigenschaften und eingesetzte Programmbausteine und seine Eigenschaften.
    Ich hoffe die Frage ist damit beantwortet.

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

    @stollenkroll Bitte unterlass das vollständige Zitieren von Posts, das ist hier unerwünscht.
    Aber:
    Falsche Antwort. ;)
    Mögliche Antworten:
    • jsonExportDaten ist eine Klasse / Struktur,
    • jsonExportDaten ist eine Variable vom Typ so und so.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!