Arbeit mit JSON in C#: Parsing und Serialisierung in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das sich zum De-facto-Standard für die Kommunikation zwischen Server und Client sowie für die Speicherung von Konfigurationen entwickelt hat. Im C# (.NET)-Ökosystem ist die Arbeit mit JSON auf höchstem Niveau umgesetzt: Dem Entwickler stehen sowohl integrierte Bibliotheken als auch leistungsstarke Drittanbieterlösungen zur Verfügung. In diesem Artikel werden wir anhand praktischer Beispiele erläutern, wie Sie JSON in C# mit modernen Ansätzen parsen, serialisieren und deserialisieren.

Wir betrachten zwei Hauptwerkzeuge: System.Text.Json (integrierte Bibliothek ab .NET Core 3.0+) und Newtonsoft.Json (beliebte Drittanbieter-Bibliothek). Sie erfahren, wie Sie C#-Objekte in JSON und zurück konvertieren, mit verschachtelten Strukturen arbeiten und Fehler behandeln.



Grundlagen der Serialisierung und Deserialisierung in C#

Bevor wir uns in den Code vertiefen, definieren wir die Begriffe. Serialisierung ist der Prozess der Umwandlung eines C#-Objekts (z. B. einer Klasseninstanz) in einen JSON-String. Deserialisierung ist der umgekehrte Prozess: Aus einem JSON-String stellen wir ein C#-Objekt wieder her. In C# werden dafür Attribute und spezielle Serialisierer-Klassen verwendet.



1. Arbeiten mit System.Text.Json (integrierte Bibliothek)

Ab .NET Core 3.0 hat Microsoft eine eigene Bibliothek für die Arbeit mit JSON vorgestellt – System.Text.Json. Sie ist schneller als Newtonsoft.Json und erfordert keine Installation zusätzlicher Pakete.

Betrachten wir eine einfache Klasse Person:

public class Person{    public string Name { get; set; }    public int Age { get; set; }    public string Email { get; set; }}

Serialisierung in JSON:

using System.Text.Json;

var person = new Person{ Name = "Alexej", Age = 30, Email = "alex@example.com"};

string json = JsonSerializer.Serialize(person);Console.WriteLine(json);// Ausgabe: {"Name":"Alexej","Age":30,"Email":"alex@example.com"}

Deserialisierung aus JSON:

string jsonString = @"{""Name"":""Maria"",""Age"":25,""Email"":""maria@example.com""}";Person? person = JsonSerializer.Deserialize<Person>(jsonString);Console.WriteLine(person?.Name); // Maria

Beachten Sie den Operator ? (nullable) – die Deserialisierung kann bei einem Fehler null zurückgeben.



2. Arbeiten mit Newtonsoft.Json (Json.NET)

Trotz des Erscheinens von System.Text.Json bleibt Newtonsoft.Json aufgrund seiner Flexibilität und umfangreichen Anpassungsmöglichkeiten eine beliebte Wahl. Für die Nutzung installieren Sie das NuGet-Paket Newtonsoft.Json.

Beispiel mit derselben Klasse Person:

using Newtonsoft.Json;

// Serialisierungvar person = new Person { Name = "Iwan", Age = 35, Email = "ivan@example.com" };string json = JsonConvert.SerializeObject(person);Console.WriteLine(json);

// Deserialisierungstring jsonInput = @"{'Name':'Olga','Age':28,'Email':'olga@example.com'}";Person? personDeserialized = JsonConvert.DeserializeObject<Person>(jsonInput);Console.WriteLine(personDeserialized?.Name); // Olga

Newtonsoft.Json unterstützt standardmäßig sowohl doppelte als auch einfache Anführungszeichen, was es toleranter gegenüber "unsauberem" JSON macht.



Fortgeschrittene Szenarien: Arbeiten mit verschachtelten Objekten und Sammlungen

In realen Projekten ist JSON selten flach. Betrachten wir ein Beispiel mit verschachtelten Daten.

Angenommen, wir haben eine Klasse Company, die eine Liste von Mitarbeitern enthält:

public class Employee{    public string Name { get; set; }    public string Position { get; set; }}

public class Company{ public string CompanyName { get; set; } public List<Employee> Employees { get; set; }}

Serialisierung (System.Text.Json):



                
                

Blogs

Buchempfehlungen