Freigeben über


JSON-Serialisierung und Deserialisierung in .NET – Übersicht

Der System.Text.Json-Namespace bietet Funktionen zum Serialisieren und Deserialisieren (bzw. Marshalling und Unmarshalling) von JavaScript Object Notation (JSON). Serialisierung ist der Prozess der Konvertierung des Zustands eines Objekts, d. h. der Werte seiner Eigenschaften, in eine Form, die gespeichert oder übertragen werden kann. Die serialisierte Form enthält keinerlei Informationen zu den zugeordneten Methoden eines Objekts. Deserialisierung rekonstruiert ein Objekt aus der serialisierten Form.

Beim Entwerfen der System.Text.Json-Bibliothek wurde mehr Wert auf eine hohe Leistung und eine geringe Arbeitsspeicherbelegung gelegt als auf eine große Bandbreite von Features. Die integrierte UTF-8-Unterstützung optimiert den Prozess des Lesens und Schreibens von JSON-Text, der als UTF-8 codiert ist. Dies ist die am häufigsten verwendete Codierung für Daten im Web und Dateien auf Datenträgern.

Die Bibliothek stellt außerdem Klassen für die Arbeit mit einem In-Memory-Dokumentobjektmodell (DOM) zur Verfügung. Diese Funktion ermöglicht einen zufälligen Zugriff auf die Elemente in einer JSON-Datei oder -Zeichenfolge.

Für Visual Basic gibt es einige Einschränkungen hinsichtlich der verwendbaren Teile der Bibliothek. Weitere Informationen finden Sie unter Visual Basic-Unterstützung.

Abrufen der Bibliothek

Die Bibliothek ist als Teil des gemeinsamen Frameworks für .NET Core 3.0 und höhere Versionen integriert. Die Quellgenerierungsfunktion ist als Teil des gemeinsamen Frameworks für .NET 6 und höhere Versionen integriert.

Installieren Sie für Frameworkversionen vor .NET Core 3.0 das NuGet-Paket System.Text.Json. Das Paket unterstützt:

  • .NET Standard 2.0 und höher
  • .NET Framework 4.6.2 und höher
  • .NET 8 und höher

Namespaces und APIs

Wichtig

System.Text.Json unterstützt die folgenden Serialisierungs-APIs, die Sie möglicherweise zuvor verwendet haben, nicht:

Reflektion im Vergleich zur Quellgenerierung

Standardmäßig erfasst System.Text.Json die Metadaten, die für den Zugriff auf Eigenschaften von Objekten für die Serialisierung und Deserialisierung zur Laufzeit erforderlich sind, mittels Reflexion. Alternativ kann System.Text.Json das C#-Feature zur Quellgenerierung verwenden, um die Leistung zu verbessern, die Nutzung des privaten Arbeitsspeichers zu reduzieren und das Kürzen von Assemblys zu erleichtern, wodurch die App-Größe reduziert wird.

Weitere Informationen finden Sie unter Reflexion im Vergleich zur Quellgenerierung.

Informationen zur Sicherheit

Informationen zu Sicherheitsbedrohungen, die beim Entwerfen von JsonSerializer berücksichtigt wurden, und zu ihrer Entschärfung finden Sie unter System.Text.Json Bedrohungsmodell.

Threadsicherheit

Der System.Text.Json-Serialisierer wurde im Hinblick auf Threadsicherheit entwickelt. Praktisch bedeutet dies, dass JsonSerializerOptions-Instanzen nach der Sperrung sicher über mehrere Threads hinweg freigegeben werden können. JsonDocument stellt eine unveränderliche und in .NET 8 und höheren Versionen, threadsichere DOM-Darstellung für JSON-Werte bereit.

Zusätzliche Ressourcen