JSON-Verarbeitung in C# (.NET): Vollständiger Leitfaden

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

JSON-Verarbeitung in C# (.NET): Vollständiger Leitfaden

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das häufig in Webanwendungen, APIs und Konfigurationsdateien verwendet wird. Im C# (.NET)-Ökosystem gibt es zwei Hauptansätze für die Arbeit mit JSON: die klassische Bibliothek Newtonsoft.Json (auch bekannt als Json.NET) und die moderne integrierte Bibliothek System.Text.Json, die mit .NET Core 3.0 und höher eingeführt wurde. In diesem Artikel werden wir beide Werkzeuge, ihre Funktionen, Syntax und Best Practices im Detail behandeln.



1. Newtonsoft.Json (Json.NET)

Die Bibliothek Newtonsoft.Json war lange Zeit der De-facto-Standard für die Arbeit mit JSON in C#. Sie bietet eine umfangreiche API, Unterstützung für LINQ to JSON, flexible Konfiguration von Serialisierung und Deserialisierung. Sie kann über NuGet installiert werden:

Install-Package Newtonsoft.Json


1.1. Serialisierung und Deserialisierung

Die grundlegendsten Operationen sind die Umwandlung eines Objekts in JSON und zurück. Betrachten wir die Klasse Person:

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


Serialisierung (Objekt → JSON):

var person = new Person { Name = "Ivan", Age = 30, Email = "ivan@example.com" };string json = JsonConvert.SerializeObject(person, Formatting.Indented);Console.WriteLine(json);


Deserialisierung (JSON → Objekt):

string json = @"{""Name"":""Maria"",""Age"":25,""Email"":""maria@example.com""}";Person person = JsonConvert.DeserializeObject<Person>(json);Console.WriteLine(person.Name); // Maria


1.2. Arbeiten mit JObject und JArray

Die Bibliothek Newtonsoft.Json unterstützt LINQ to JSON, was den dynamischen Zugriff auf JSON-Elemente ohne Erstellung streng typisierter Klassen ermöglicht.

string json = @"{""products"":[{""id"":1,""name"":""Laptop""},{""id"":2,""name"":""Maus""}]}";JObject obj = JObject.Parse(json);JArray products = (JArray)obj["products"];

foreach (var product in products){ int id = (int)product["id"]; string name = (string)product["name"]; Console.WriteLine($"ID: {id}, Name: {name}");}


1.3. Attribute zur Konfiguration der Serialisierung

Mit Attributen können Sie die Namen von Eigenschaften in JSON steuern, Felder ignorieren, Standardwerte festlegen und vieles mehr.

public class User{    [JsonProperty("user_name")]    public string Name { get; set; }

[JsonIgnore] public string Password { get; set; }

[JsonProperty("registration_date")] public DateTime CreatedAt { get; set; }}

// Bei der Serialisierung wird Password ausgelassen und Name wird zu "user_name"string json = JsonConvert.SerializeObject(user);


2. System.Text.Json (integrierte .NET-Bibliothek)

Ab .NET Core 3.0 hat Microsoft eine eigene Bibliothek System.Text.Json eingeführt, die für Leistung und minimalen Speicherverbrauch optimiert ist. Sie erfordert keine Installation zusätzlicher Pakete (außer einiger Erweiterungen).



2.1. Serialisierung und Deserialisierung

Die Arbeit mit System.Text.Json ähnelt Newtonsoft.Json, weist jedoch einige Unterschiede in der Syntax und im Standardverhalten auf (z. B. Groß-/Kleinschreibung).

using System.Text.Json;

var person = new Person { Name = "Alexej", Age = 28, Email = "alex@example.com" };string json = JsonSerializer.Serialize(person, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);

// Deserialisierungstring jsonInput = @"{""Name"":""Olga"",""Age"":32,""Email"":""olga@example.com""}";Person deserializedPerson = JsonSerializer.Deserialize<Person>(jsonInput);


Wichtig! Standardmäßig ist System.Text.Json t

Empfehlungen