Arbeiten mit JSON in C#: Parsing und Serialisierung für Anfänger

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

Einführung in die Arbeit mit JSON in C#

\n\n

JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das in der Webentwicklung, mobilen Anwendungen und Microservices weit verbreitet ist. Für einen C#-Entwickler ist die Fähigkeit, mit JSON zu arbeiten, eine grundlegende Fähigkeit. In diesem Artikel behandeln wir die Grundlagen des Parsings (Deserialisierung) und der Serialisierung von JSON unter Verwendung des modernen Namespace System.Text.Json, der in .NET Core 3.0 und höher sowie .NET 5/6/7/8 enthalten ist.

\n\n

Wir werden Folgendes behandeln:

\n
    \n
  • Was Serialisierung und Deserialisierung sind
  • \n
  • Wie man ein C#-Objekt in einen JSON-String umwandelt
  • \n
  • Wie man JSON liest und zurück in ein Objekt umwandelt
  • \n
  • Arbeit mit verschachtelten Objekten und Sammlungen
  • \n
  • Fehlerbehandlung und Konfiguration der Serialisierung
  • \n
\n\n

Alle Codebeispiele sind für eine C#-Konsolenanwendung (.NET 6+) geschrieben. Sie können sie kopieren und sofort ausführen.

\n\n

1. Grundlagen der Serialisierung: Objekt → JSON

\n\n

Serialisierung ist der Prozess der Umwandlung eines Objekts (oder einer Datenstruktur) in einen JSON-String. In C# wird dafür die Klasse JsonSerializer aus dem Namespace System.Text.Json verwendet.

\n\n

Erstellen eines einfachen Modells

\n\n

Angenommen, wir haben eine Klasse Person:

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

Serialisierung eines Objekts

\n\n

Jetzt erstellen wir eine Instanz und wandeln sie in JSON um:

\n\n
using System.Text.Json;\n\nPerson person = new Person\n{\n    Name = "Ivan Petrov",\n    Age = 30,\n    Email = "ivan@example.com"\n};\n\nstring jsonString = JsonSerializer.Serialize(person);\nConsole.WriteLine(jsonString);
\n\n

Ergebnis:

\n\n
{"Name":"Ivan Petrov","Age":30,"Email":"ivan@example.com"}
\n\n

Standardmäßig verwendet JsonSerializer camelCase für Eigenschaftsnamen (erster Buchstabe klein), aber in unserem Beispiel bleiben die Namen großgeschrieben, da wir die Einstellungen nicht geändert haben. Wenn Sie striktes camelCase benötigen, verwenden Sie JsonSerializerOptions:

\n\n
var options = new JsonSerializerOptions\n{\n    PropertyNamingPolicy = JsonNamingPolicy.CamelCase\n};\nstring jsonCamelCase = JsonSerializer.Serialize(person, options);\nConsole.WriteLine(jsonCamelCase);\n// {"name":"Ivan Petrov","age":30,"email":"ivan@example.com"}
\n\n

2. Deserialisierung: JSON → Objekt

\n\n

Deserialisierung ist der umgekehrte Prozess: Wir nehmen einen JSON-String und wandeln ihn in ein C#-Objekt um.

\n\n

Einfaches Beispiel einer Deserialisierung

\n\n

Angenommen, wir haben JSON von einer API erhalten:

\n\n
string jsonFromApi = @"{""Name"":""Anna Smirnova"",""Age"":25,""Email"":""anna@test.com""}";\n\nPerson? personFromJson = JsonSerializer.Deserialize<Person>(jsonFromApi);\n\nif (personFromJson != null)\n{\n    Console.WriteLine($"Name: {personFromJson.Name}, Alter: {personFromJson.Age}");\n}
\n\n

Beachten Sie das Zeichen ? nach dem Typ Person – dies ist eine Nullable-Annotation, die angibt, dass das Ergebnis null sein kann (z. B. wenn das JSON ungültig ist).

\n\n

Arbeit mit Arrays und Listen

\n\n

Oft enthält JSON Sammlungen von Objekten. Angenommen, wir haben ein Array von Benutzern:

\n\n
string jsonArray = @"\n[\n    {""Name"":""Oleg"",""Age"":35},\n    {""Name"":""Maria"",""Age"":28},\n    {""Name"":""Dmitri"",""Age"":42}\n]";\n\nList<Person>? people = JsonSerializer.Deserialize<List<Person>>(jsonArray);\n\nif (people != null)\n{\n    foreach (var p in people)\n    {\n        Console.WriteLine($"{p.Name} - {p.Age} Jahre");\n    }\n}
\n\n

3. Arbeit mit verschachtelten Objekten und komplexen Strukturen

\n\n

Echte JSON-Daten sind selten flach. Betrachten wir

Blogs

Buchempfehlungen