JSON-Verarbeitung in C# (.NET): Vollständige Anleitung mit Beispielen
JSON (JavaScript Object Notation) ist eines der beliebtesten Formate für den Datenaustausch in modernen Webanwendungen, APIs und Konfigurationsdateien. Im .NET-Ökosystem stehen Entwicklern leistungsstarke Werkzeuge für die Arbeit mit JSON zur Verfügung, die eine einfache Serialisierung von Objekten in JSON und zurück ermöglichen. In diesem Artikel betrachten wir zwei Hauptansätze im Detail: die integrierte Bibliothek System.Text.Json (empfohlen für .NET Core 3.0+ und .NET 5+) und die beliebte Drittanbieter-Bibliothek Newtonsoft.Json (auch bekannt als Json.NET).
1. System.Text.Json — Moderner .NET-Standard
Ab .NET Core 3.0 hat Microsoft eine eigene leistungsstarke Bibliothek für die Arbeit mit JSON vorgestellt — System.Text.Json. Sie ist für minimalen Speicherverbrauch und hohe Geschwindigkeit optimiert, was sie zur idealen Wahl für neue Projekte macht.
1.1. Installation und Import
Die Bibliothek ist bereits in .NET 5/6/7/8/9 integriert, daher ist keine zusätzliche Installation erforderlich. Für die Nutzung reicht es aus, den Namespace einzubinden:
using System.Text.Json;using System.Text.Json.Serialization;1.2. Grundlegende Serialisierung und Deserialisierung
Betrachten wir ein einfaches Beispiel: Serialisierung eines Objekts in JSON und zurück.
// Klasse definierenpublic class Person{ public string Name { get; set; } public int Age { get; set; } public bool IsEmployed { get; set; }}
// Serialisierungvar person = new Person { Name = "Ivan", Age = 30, IsEmployed = true };string json = JsonSerializer.Serialize(person);Console.WriteLine(json); // {"Name":"Ivan","Age":30,"IsEmployed":true}
// Deserialisierungvar deserializedPerson = JsonSerializer.Deserialize<Person>(json);Console.WriteLine(deserializedPerson.Name); // Ivan1.3. Arbeiten mit Attributen
System.Text.Json unterstützt Attribute zur Feinabstimmung der Serialisierung:
public class Product{ [JsonPropertyName("product_id")] public int Id { get; set; } [JsonIgnore] public string InternalCode { get; set; } [JsonConverter(typeof(JsonStringEnumConverter))] public ProductCategory Category { get; set; }}
public enum ProductCategory{ Electronics, Clothing, Food}
var product = new Product { Id = 101, InternalCode = "SECRET", Category = ProductCategory.Electronics };
string json = JsonSerializer.Serialize(product);// {"product_id":101,"Category":"Electronics"}// InternalCode wurde dank [JsonIgnore] nicht in JSON aufgenommen1.4. Serialisierungsoptionen
Sie können das Verhalten des Serialisierers über JsonSerializerOptions anpassen:
var options = new JsonSerializerOptions{ WriteIndented = true, // Schöne Ausgabe mit Einrückungen PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // camelCase für Eigenschaften DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // null ignorieren};
string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);/* Ausgabe:{ "name": "Ivan", "age": 30, "isEmployed": true}*/2. Newtonsoft.Json (Json.NET) — Bewährtes Werkzeug
Vor der Einführung von System.Text.Json war Newtonsoft.Json der De-facto-Standard für die Arbeit mit JSON in .NET. Es bietet flexiblere Einstellungen und eine breite Palette von Funktionen, ist jedoch in der Leistung unterlegen.
2.1. Installation
Zur Verwendung von Newtonsoft.Json muss das NuGet-Paket installiert werden:
// Über die Package Manager Console:Install-Package Newtonsoft.Json
// Oder über die .NET CLI:dotnet add package Newtonsoft.Json2.2. Grundlegende Arbeit
using Newtonsoft.Json;
public class Or Auch in der Bibliothek
Kafka Client Java: Vollständiges Tutorial mit Code-Beispielen
E-Mail-Versand in Java: Die Bibliothek Jakarta Mail (JavaMail)
Reaktive Programmierung in C# (.NET) — Observable, Rx.NET und LINQ
Chronicle Map Java: vollständige Anleitung mit Beispielen
Retrofit für Kotlin: Vollständiger Leitfaden mit Beispielen