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#



JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das häufig in der Webentwicklung, Konfigurationsdateien und APIs verwendet wird. Wenn Sie anfangen, C# und .NET zu lernen, ist die Fähigkeit, mit JSON zu arbeiten, eine unverzichtbare Fertigkeit. In diesem Artikel werden wir behandeln, wie man JSON-Parsing (Umwandlung einer Zeichenfolge in ein Objekt) und Serialisierung (Umwandlung eines Objekts in eine JSON-Zeichenfolge) mit den integrierten .NET-Mitteln und der beliebten Bibliothek Newtonsoft.Json durchführt.



Wir werden praktische Beispiele betrachten, die Ihnen helfen, die wichtigsten Konzepte schnell zu erlernen. Der gesamte Code ist in C# (.NET 6+) geschrieben, funktioniert aber mit minimalen Änderungen auch in früheren Versionen.



1. Integrierte Arbeit mit JSON: Der Namespace System.Text.Json



Seit .NET Core 3.0 hat Microsoft den leistungsstarken Namespace System.Text.Json eingeführt. Er ist in die Plattform integriert und erfordert keine Installation zusätzlicher Pakete. Dies ist das wichtigste Werkzeug für die Arbeit mit JSON in modernen .NET-Anwendungen.



1.1 Serialisierung eines Objekts in JSON



Serialisierung ist der Prozess der Umwandlung eines C#-Objekts in eine JSON-Zeichenfolge. Betrachten wir eine einfache Klasse Person:



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

// Verwendungvar person = new Person{ Name = "Ivan Ivanov", Age = 30, Email = "ivan@example.com"};

string json = System.Text.Json.JsonSerializer.Serialize(person);Console.WriteLine(json);


Ergebnis der Ausführung:



{"Name":"Ivan Ivanov","Age":30,"Email":"ivan@example.com"}


Standardmäßig werden Eigenschaften mit Namen serialisiert, die mit den Eigenschaftsnamen in C# übereinstimmen. Sie können die Formatierung mit JsonSerializerOptions anpassen, z. B. um JSON lesbarer zu machen:



var options = new System.Text.Json.JsonSerializerOptions{    WriteIndented = true};

string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);


Jetzt wird die Ausgabe mit Einrückungen angezeigt:



{  "Name": "Ivan Ivanov",  "Age": 30,  "Email": "ivan@example.com"}


1.2 Deserialisierung (Parsing) von JSON in ein Objekt



Der umgekehrte Prozess – die Umwandlung einer JSON-Zeichenfolge in ein C#-Objekt – wird Deserialisierung genannt. Verwenden Sie die Methode JsonSerializer.Deserialize<T>():



string jsonString = @"{""Name"":""Maria Petrova"",""Age"":25,""Email"":""maria@example.com""}";

Person? person = System.Text.Json.JsonSerializer.Deserialize<Person>(jsonString);

if (person != null){ Console.WriteLine($"Name: {person.Name}, Alter: {person.Age}");}


Wichtig: Wenn JSON nicht der Klassenstruktur entspricht, wird eine JsonException ausgelöst. Verwenden Sie für sicheres Arbeiten eine Ausnahmebehandlung oder prüfen Sie auf null.



1.3 Arbeiten mit JsonDocument für beliebiges JSON



Manchmal ist die JSON-Struktur im Voraus unbekannt oder Sie möchten Daten lesen, ohne Klassen zu erstellen. Verwenden Sie dazu JsonDocument:



string jsonText = @"{""product"":""Laptop"",""price"":75000,""inStock"":true}";

using JsonDocument doc = JsonDocument.Parse(jsonText);JsonElement root = doc.RootElement;

string product = root.GetProperty("product").GetString();int price = root.GetProperty("price").GetInt32();bool inStock = root.GetProperty("inStock").GetBoolean();

Console.WriteLine($"{product}: {price} Rubel (verfügbar: {inStock})");


JsonDocument implementiert IDisposable, daher müssen Sie unbedingt using verwenden, um Ressourcen freizugeben.



2. Die klassische Bibliothek Newtonsoft.Json (Json.NET)



Vor dem Erscheinen von System.Text.

Blogs

Buchempfehlungen