Einführung
Der System.Text.Json-Namespace ist ein moderne Alternative zu Newtonsoft.Json, die leistungsstarke JSON-Serialisierung und -Deserialisierung in .NET bietet. Eine Funktion, die bisher in System.Text.Json nicht verfügbar war, war eine Möglichkeit, den Vertragslösungsprozess anzupassen, ähnlich der IContractResolver-Schnittstelle in Newtonsoft.Json. Diese Funktion ist jedoch jetzt in .NET 7 durch die Implementierung von IJsonTypeInfoResolver verfügbar.
Antwort
Neue .NET 7-Funktion: IJsonTypeInfoResolver
Ab .NET 7 wird der Namespace System.Text.Json eingeführt die IJsonTypeInfoResolver-Schnittstelle, die eine Vertragsanpassung ermöglicht. Mithilfe dieser Schnittstelle können Entwickler benutzerdefinierte Vertragslöser erstellen, die die Metadaten für einen bestimmten Typ während der Serialisierung und Deserialisierung ändern.
DefaultJsonTypeInfoResolver
Das System.Text.Json-Team hat stellte einen Standardvertragslöser, DefaultJsonTypeInfoResolver, bereit, der die IJsonTypeInfoResolver-Schnittstelle implementiert. Dieser Resolver bietet ähnliche Funktionen wie der DefaultContractResolver in Newtonsoft.Json. Sie können eine Unterklasse von DefaultJsonTypeInfoResolver erstellen oder ihr Modifikatoren hinzufügen, um die Vertragsmetadaten entsprechend Ihren Anforderungen anzupassen.
Verwendung von DefaultJsonTypeInfoResolver mit Modifikatoren
Um Ihre SelectiveSerializer-Klasse an die Arbeit anzupassen System.Text.Json können Sie die Erweiterungsmethode SerializeSelectedFields für verwenden DefaultJsonTypeInfoResolver:
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), // Add other options as required PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true, };
Dadurch werden während der Serialisierung selektiv nur die angegebenen Eigenschaften serialisiert.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie kann ich die JSON-Serialisierung in .NET 7 mit IJsonTypeInfoResolver anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!