Sie sind hier:
Lexikon/Glossar
Telefon (Mo-Fr 9 bis 16 Uhr):
0201/649590-0
|
Kontaktformular
Buy me a coffee
MENU
Start
Hauptseite
Angebote im Überblick
Kernkompetenzen
Softwareentwicklung
Beratung
Firmen-Schulungen
Offene Seminare
Online-Maßnahmen
Vorträge
Coaching
Support
Fachbücher
Fachartikel
Konditionen
Themen
Themenüberblick
Aktuelle Themen
Web & Cloud
Apps / Mobilplattformen
Benutzeroberflächen / User Experience
.NET
JavaScript/TypeScript
Java
Programmiersprachen/Sprachsyntax
Entwicklungswerkzeuge
Scripting
Softwareentwicklung allgemein
Datenbanken
Betriebssysteme und Virtualisierung
Microsoft Server-Produkte
Windows und Microsoft Office für Anwender
Allgemeine IT-Themen
Beratung
Beratungsthemen
Coaching
Softwareentwicklung
Technischer Support
Unsere Top-Berater
Referenzkunden
Angebotsanfrage
Individuelle Schulungen
1020 Schulungsthemen
Agendakonfigurator
Weiterbildungsphilosophie
Didaktische Konzepte
Vor-Ort oder Online
Unsere Top-Trainer
Referenzkunden
Teilnehmerfeedback
Angebotsanfrage
Offene Seminare
.NET-Akademie
.NET/C#-Basisseminar
WPF
WinUI
.NET MAUI
Blazor
ASP.NET WebAPI & gRPC
Entity Framework Core
Unit Testing / TDD
PowerShell
Infotage
Wissen
Übersicht
Fachbücher
Fachartikel
Konferenzvorträge
Konferenzen/Events
Spickzettel
Lexikon/Glossar
Programmcodebibliothek
Versionshistorie
Weblog
Downloads
Newsletter
Community-/Leserportal
Registrierung
.NET/C#/Visual Studio
.NET 8.0
.NET 7.0
.NET 6.0
ASP.NET (Core)/Blazor
PowerShell
Über uns
Kontakt
Selbstdarstellung
Kernkompetenzen
Dr. Holger Schwichtenberg
Top-Experten
Leitung & Kundenteam
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Konditionen
Stellenangebote
Weitere Websites
Impressum
Datenschutzerklärung, Haftung, Urheberrecht
Suche
Themenkatalog
Tag Cloud
Volltextsuche
Site Map
FAQs
Erklärung des Begriffs: System.Text.Json (STJ)
Begriff
System.Text.Json
Abkürzung
STJ
Eintrag zuletzt aktualisiert am
18.11.2024
Zur Stichwortliste unseres Lexikons
Was ist
System.Text.Json
?
Microsoft kehrt seit
.NET Core 3.0
ab von JSON.NET und wirft mit dem
Nuget-Paket
System.Text
.Json (manchmal von Microsoft abgekürzt als "STJ") einen neuen JSON-Serializer in den Ring, der schneller als JSON.NET ist, aber nicht alle Funktionen wie JSON.NET bietet.
Viele Jahre hat Microsoft in .NET bei der Verarbeitung von Dokumenten und
Webservice
aufrufen in der beliebten
JavaScript Object Notation
(JSON) auf die
Open Source
-Drittanbieter-
Softwarekomponente
"Newtonsoft JSON" (alias JSON.NET) von James Newton-King, der mittlerweile für Microsoft in Neuseeland arbeitet, gesetzt. Im Zuge von
.NET Core 3.0
entwickelte das .NET-Entwicklungsteam in Redmond aber nun wieder eine eigene
Softwarekomponente
für die JSON-Serialisierung und -
Deserialisierung
mit Namen "
System.Text
.Json".
Kompatibilität
Im Gegensatz zu anderen Teilen des modernen .NET (z.B. ASP.NET Core und
Blazor
) läuft
System.Text
.Json nicht nur auf dem modernen .NET, sondern auch auf deutlich älteren .NET-Versionen.
System.Text
.Json funktioniert mit dem klassischen
.NET Framework
ab Version 4.6.2 und dem modernen .NET ab Version 2.0. Dazu ist die Bibliothek als NuGet-Paket verfügbar.
Vergleich mit Newtonsoft JSON (alias JSON.NET) von James Newton-King
System.Text
.Json ist bei der Serialisierung und
Deserialisierung
von JSON schneller als JSON.NET.
System.Text
.Json beherrscht aber nicht alle Funktionen von JSON.NET und ist auch bei der Serialisierung /
Deserialisierung
nicht immer kompatibel.
Warum eine neue JSON-Komponente?
Es gab eine Meinungsverschiedenheit (von einem Zerwürfnis zu sprechen, scheint übertrieben) zwischen James Newton-King und seinem Arbeitgeber Microsoft, die überhaupt der Grund dafür ist, das Microsoft seit
.NET Core 3.0
strategisch von JSON.NET abgekehrt ist. Microsoft wollte, das JSON.NET durch den Einsatz der neueren Speicherzugriffs-APIs (Span<T>) beschleunigt wird. James Newton-King sah in dieser gravierenden Implementierungsänderung aber die Gefahr von Breaking Changes, also dem Verlust der Kompatibilität.
Kommentar von James Newton-King dazu ist: "Unfortunately, Json.NET's wealth of features and popularity works against making major changes to it. Supporting new technologies like Span would require fundamental breaking changes to the library and would disrupt existing applications and libraries that depend on it." (dies wird von Microsoft zitiert in [
https://github.com/dotnet/announcements/issues/90
]).
Immerhin gibt es für ASP.NET Core ab Version 3.0 weiterhin die Option, beim bisherigen JSON.NET bleiben. Dafür installiert man das
Nuget-Paket
Microsoft.AspNetCore.Mvc.NewtonsoftJson und ruft in ConfigureServices() die
Methode
nach AddControllers() noch AddNewtonsoftJson() auf:
public void ConfigureServices(IServiceCollection services)
{
…
services.AddControllers().AddNewtonsoftJson()
…
}
Dies wird wohl für einige Zeit noch Standard in den meisten
ASP.NET Core WebAPI
-Entwicklungsprojekten sein, denn
System.Text
.Json hat einen weiteren Mangel: Man kann damit bisher nicht automatisch
Metadaten
im
Swagger
Open API-Format erzeugen (vgl. "Support for OpenAPI /
Swagger
when using
System.Text
.Json is ongoing and unlikely to be available as part of the 3.0 release." [
https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/
]).
Highlights der Neuerungen in
System.Text
.Json 6.0 (erschienen Nov 2021 zusammen mit
.NET 6.0
)
Source Generator
JsonNode: Veränderbares DOM
IAsyncEnumberable
Highlights der Neuerungen in
System.Text
.Json 7.0 (erschienen Nov 2022 zusammen mit
.NET 7.0
)
Contract
-Anpassungen per Code
Polymorphismus
Unterstützung für Pflichtmitglieder (nur bei
Reflection
, nicht für
Source Generator
)
Highlights der Neuerungen in
System.Text
.Json 8.0 (erschienen Nov 2023 zusammen mit
.NET 8.0
)
Konfigurierbare
Namenskonvention
en
Handhabung für fehlende Informationen bei der
Deserialisierung
Verbesserungen für den JSON
Source Generator
Neue Datentypen bei
System.Text
.Json
Serialisierung nicht öffentlicher Mitglieder bei
System.Text
.Json
Erweiterungen der Klassen JsonNode und JsonArray
Annotation
für eigene Konverter
Highlights der Neuerungen in
System.Text
.Json 9.0 (erschienen Nov 2024 zusammen mit
.NET 9.0
)
Neue Einstellungen in JsonSerializerOptions
- Berücksichtigung von Nullable-Kontext und [DisallowNull]: RespectNullable
Annotation
s
Berücksichtigung verpflichtender Konstruktorparameter: RespectRequiredConstructorParameters
Einrückungen anpassen: IndentCharacter und IndentSize
Flexibilität bei der Position von Typ-
Metadaten
($type): AllowOutOfOrderMetadataProperties
JsonSerializerOptions.Web liefert Einstellungen, die
ASP.NET Core WebAPI
verwendet
Weitere neue Einstellungen
Anpassung der Serialisierung von
Enumeration
smitgliedsnamen: [JsonStringEnumMemberName("xy")]
Lesen von Multi-JSON-Dokumenten: AllowMultipleValues in JsonReaderOptions für Utf8JsonReader
Weitere Neuerungen
Klasse JsonSchemaExporter:
Metadaten
für JSON-Dokument generieren wie bei OpenAPI
Neue
Methode
DeepEquals() in der Klasse JsonElement
Querverweise zu anderen Begriffen im Lexikon
JavaScript Object Notation (JSON)
ASP.NET Core WebAPI
Softwarekomponente
Source Generator
Namenskonvention
Deserialisierung
.NET Framework
.NET Core 3.0
Enumeration
Open Source
System.Text
Nuget-Paket (nupkg)
Annotation
Reflection
Webservice
Metadaten
.NET 8.0 (.NET 8)
.NET 7.0 (.NET 7)
.NET 6.0 (.NET 6)
Contract
.NET 9.0 (.NET 9)
Methode
Swagger
Blazor
Beratung & Support
Anfrage für Beratung/Consulting zu System.Text.Json STJ
Gesamter Beratungsthemenkatalog
Technischer Support zum System.Text.Json STJ
Schulungen zu diesem Thema
NestJS
.NET 8.0 - Änderungen und Neuerungen gegenüber .NET 7.0
.NET 9.0 - Änderungen und Neuerungen gegenüber .NET 8.0
Neuerungen in .NET Core 3.0/3.1 gegenüber Version 2.x (inkl. ASP.NET Core, Entity Framework Core, WPF und Windows Forms)
.NET 6.0 - Änderungen und Neuerungen gegenüber .NET 5.0
.NET-Entwickler-Update 2025
.NET 7.0 - Änderungen und Neuerungen gegenüber .NET 6.0
.NET 10.0 - Änderungen und Neuerungen gegenüber .NET 9.0
node.js - Entwicklung hoch-skalierbarer Webanwendungen und/oder WebAPIs/REST-Dienste mit JavaScript (oder TypeScript) auf dem Server
Anfrage für eine individuelle Schulung zum Thema System.Text.Json STJ
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr