Einführung in die Arbeit mit JSON in C#
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das sich als Standard für die Kommunikation zwischen Webdiensten, Konfigurationsdateien und APIs etabliert hat. Im C# (.NET)-Ökosystem gehört die Arbeit mit JSON zu den grundlegenden Aufgaben, die jeder Entwickler bewältigt. In diesem Artikel werden wir ausführlich untersuchen, wie man Daten in C# parst (deserialisiert) und serialisiert, sowohl mit der integrierten Bibliothek System.Text.Json als auch mit der beliebten Drittanbieter-Bibliothek Newtonsoft.Json.
Sie lernen, wie Sie C#-Objekte in JSON-Zeichenfolgen umwandeln und zurück, wie Sie mit verschachtelten Strukturen arbeiten und auf welche Fallstricke Sie in der Praxis stoßen können. Das Material wird sowohl für Anfänger als auch für erfahrene Entwickler nützlich sein, die ihr Wissen systematisieren möchten.
Serialisierung von C#-Objekten in JSON
Serialisierung ist der Prozess der Umwandlung eines C#-Objekts (oder einer anderen Datenstruktur) in eine Zeichenfolge im JSON-Format. In .NET gibt es mehrere Ansätze dafür. Betrachten wir zwei Hauptansätze: System.Text.Json (von Microsoft empfohlen) und Newtonsoft.Json (älter, aber immer noch weit verbreitet).
Serialisierung mit System.Text.Json
Ab .NET Core 3.0 führte Microsoft eine eigene Bibliothek für die Arbeit mit JSON ein — System.Text.Json. Sie zeichnet sich durch hohe Leistung und minimalen Speicherverbrauch aus. Für die Serialisierung wird die Methode JsonSerializer.Serialize() verwendet.
using System;using System.Text.Json;
public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}
class Program{ static void Main() { var person = new Person { Name = "Ivan Petrov", Age = 30, Email = "ivan@example.com" };
string json = JsonSerializer.Serialize(person); Console.WriteLine(json); }}Ergebnis der Ausführung:
{"Name":"Ivan Petrov","Age":30,"Email":"ivan@example.com"}Serialisierung mit Newtonsoft.Json
Die Bibliothek Newtonsoft.Json (auch bekannt als Json.NET) war lange Zeit der De-facto-Standard. Sie bietet mehr Flexibilität und Einstellungsmöglichkeiten als die integrierte Lösung. Zur Verwendung müssen Sie das NuGet-Paket Newtonsoft.Json installieren.
using System;using Newtonsoft.Json;
public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}
class Program{ static void Main() { var person = new Person { Name = "Maria Sidorova", Age = 25, Email = "maria@example.com" };
string json = JsonConvert.SerializeObject(person); Console.WriteLine(json); }}Das Ergebnis wird ähnlich sein, aber Newtonsoft.Json verwendet standardmäßig die camelCase-Notation für Eigenschaftsnamen, sofern konfiguriert.
Serialisierungskonfiguration
In beiden Bibliotheken können Sie das Ausgabeformat steuern: Null-Werte ignorieren, CamelCase verwenden, JSON mit Einrückung formatieren usw.
Beispiel für System.Text.Json mit Einstellungen:
var options = new JsonSerializerOptions{ WriteIndented = true, // Schöne Ausgabe mit Einrückung PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // CamelCase-Notation DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // Null ignorieren};
string json = JsonSerializer.Serialize(person, options);Parsen (Deserialisierung) von JSON in C#
Deserialisierung ist der umgekehrte Prozess: das Umwandeln einer JSON-Zeichenfolge in ein C#-Objekt. Dies ist notwendig, wenn Daten von einer API empfangen oder Konfigurationsdateien gelesen werden.