Laden...

JSON auslesen

Letzter Beitrag vor 2 Jahren 4 Posts 536 Views
JSON auslesen

Hallo,

bitte erschlagt mich nicht gleich.
Ich möchte mir ein wenig Erleichterung beim Extrahieren von Daten aus .JSON-Dateien verschaffen (alles manuell per copy&paste dauert bissl)..

Ich hab null Plan von Deserialisierung einer solchen Art und tue mich grade mit google bzw. dem Verstehen von dem was ich finde ein wenig schwer...

Kann mir wer hier mal ein paar Anschübe dahingehend geben wie ich es hinbekomme alle Daten der einzelnen Felder auszulesen / in ne Klasse zu packen, ohne dass ich den ganzen Text durchgehe und immer wieder nach ":" oder so in der Art suche und die einzeln abspeichern muss..
Klasse erstellen für die ganzen Unterknoten finde ich schon recht seltsam.
Gefundene Beispiele sind immer nur ein Hauptknoten und ein "Unterfeld"

Hier wie solch eine aufgebaut ist:


           {
            "test":true,
            "version":"2.0",
            "Angelegenheit":
                {
                "Tatsache":
                    {
                    "Fallart":"K",
                    "Tatsache spez":
                        {
                        "Faktencode":"R545",
                        "Kategorie":"1"
                        },
                    "Sammlung":
                        {
                        "Betrag":"120.0"
                        },
                    "DatumZeit":"2022-05-02T11:47:37+02:00",
                    "Officer":
                        [
                            {
                            "Seriennummer":"1",
                            "Mitarbeiternummer":"160101"
                            }
                        ],
                    "Pflegestelle":
                        {
                        "Stadtcode":"1234",
                        "Straßencode":"1",
                        "Straßenname":"A27",
                        "HektoM":"69.7",
                        "igO":"N"
                        },
                    "Fahrzeug":
                        {
                        "Fahrzeugcode":"BA",
                        "Ländercode":"6030",
                        "Kennzh":"B-12432"
                        },
                    "Optionen":
                        [
                            {
                            "Stichwort":"R545",
                            "Option":"1EigeneWahr7Golden",
                            "Variabeln":
                                [
                                    {
                                    "spezVariable":"Gründe dafür",
                                    "Freitext":"selbstverschuldet"
                                    }
                                ]
                            }
                        ]
                    },
                "Validierung":
                    [
                        {
                        "Code":"RDW",
                        "ausgefuehrt":"N"
                        }
                    ],
                "LParameter":
                    {
                    "AngabenErhalten":"J",
                    "GrundNachbearbeitung":"OVT"
                    },
                "Anhaenge":
                    [
                        {
                        "Anhangcode":"33",
                        "Anhangname":"12432.jpg",
                        "mimetype":"image/jpeg",
                        "Inhalt":"..."
                        }
                    ],
                "Projekt":
                    {
                        "Projektcode":"MAN"
                    }
                }
            }

Wenn du keine passende Klasse hast, mit System.Text.Json kann man meine ich in dynamic deserialisieren.


      dynamic obj = System.Text.Json.JsonSerializer.Deserialize<dynamic>("deinjsontext");

System.Text.Json ist von MS, gibt's im nuget.

Du kannst das JSON in die Zwischenablage nehmen und dann in Visual Studio über Edit - Paste Special - Paste JSON as Classes (siehe Screenshot) einfügen.
Visual Studio erstellt dir dann automatisch Klassen dafür.

Anstatt dynamic kannst du dann deine konkrete Klasse als Typ verwenden:


var myJsonObject = System.Text.Json.JsonSerializer.Deserialize<MyJsonObject>(jsonAsString);

@dannoe: hach, wie geil ist das denn..kannte ich so ja gar nicht..thx...