Arbeiten mit JSON in C#: Parsen und Serialisieren von Objekten

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 in modernen Webanwendungen, APIs und Konfigurationsdateien weit verbreitet ist. Für einen C#-Entwickler ist die Fähigkeit, mit JSON zu arbeiten, eine unverzichtbare Fähigkeit, insbesondere bei der Erstellung von REST-Clients, Microservices oder Anwendungen, die mit externen Datenquellen interagieren.



Im .NET-Ökosystem gibt es zwei Hauptansätze für die JSON-Verarbeitung: die klassische Bibliothek Newtonsoft.Json (auch bekannt als Json.NET) und die moderne integrierte Bibliothek System.Text.Json, die in .NET Core 3.0 eingeführt wurde und ab .NET 5+ zum Standard wurde. Beide Bibliotheken ermöglichen zwei Schlüsseloperationen: Serialisierung (Umwandlung eines C#-Objekts in einen JSON-String) und Deserialisierung (Umwandlung eines JSON-Strings zurück in ein C#-Objekt).



In diesem Artikel werden wir beide Ansätze im Detail behandeln, lernen, komplexe Datenstrukturen zu parsen, und die besten Praktiken für die Arbeit mit JSON in C# betrachten.



1. Basisoperationen: Serialisierung und Deserialisierung



1.1 Verwendung von Newtonsoft.Json (Json.NET)



Newtonsoft.Json ist seit vielen Jahren der De-facto-Standard für die Arbeit mit JSON in .NET. Um zu beginnen, installieren Sie das Paket über NuGet:



Install-Package Newtonsoft.Json


Betrachten wir eine einfache Klasse als Beispiel:



public class User{    public int Id { get; set; }    public string Name { get; set; }    public string Email { get; set; }    public bool IsActive { get; set; }}


Serialisierung eines Objekts in JSON:



using Newtonsoft.Json;

User user = new User{ Id = 1, Name = "Ivan Petrov", Email = "ivan@example.com", IsActive = true};

string json = JsonConvert.SerializeObject(user, Formatting.Indented);Console.WriteLine(json);


Ergebnis der Ausführung:



{  "Id": 1,  "Name": "Ivan Petrov",  "Email": "ivan@example.com",  "IsActive": true}


Deserialisierung von JSON zurück in ein Objekt:



string jsonString = @"{""Id"":1,""Name"":""Ivan Petrov"",""Email"":""ivan@example.com"",""IsActive"":true}";User deserializedUser = JsonConvert.DeserializeObject<User>(jsonString);Console.WriteLine($"Benutzer: {deserializedUser.Name}, E-Mail: {deserializedUser.Email}");


1.2 Verwendung von System.Text.Json



Ab .NET Core 3.0 hat Microsoft eine eigene Bibliothek System.Text.Json eingeführt, die leistungsoptimiert ist und keine externen Abhängigkeiten erfordert.



Serialisierung:



using System.Text.Json;

User user = new User{ Id = 2, Name = "Maria Smirnova", Email = "maria@example.com", IsActive = false};

string json = JsonSerializer.Serialize(user, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);


Deserialisierung:



string jsonString = @"{""Id"":2,""Name"":""Maria Smirnova"",""Email"":""maria@example.com"",""IsActive"":false}";User deserializedUser = JsonSerializer.Deserialize<User>(jsonString);Console.WriteLine($"Benutzer: {deserializedUser.Name}");


2. Arbeit mit komplexen Datenstrukturen



2.1 Verschachtelte Objekte und Sammlungen



JSON enthält oft verschachtelte Strukturen. Betrachten wir ein Beispiel mit einem Array von Benutzerbestellungen:



public class Order{    public int OrderId { get; set; }    public decimal Amount { get; set; }    public List<string> Items { get; set; }}

public class Customer{ public int CustomerId { get; set; } public string FullName { get; set; } public List<Order> Orders { get; set; }}


Deserialisierung von komplexem JSON

Blogs

Buchempfehlungen