Kann System.Text.Json selektive Serialisierung wie IContractResolver implementieren?
Dem neuen System.Text.Json-Namespace fehlt ein genaues Äquivalent zu Newtonsofts IContractResolver. Mit .NET 7 wird jedoch die Vertragsanpassung eingeführt, die eine ähnliche Funktionalität bietet.
Vertragsanpassung in .NET 7
Mit der Vertragsanpassung können Benutzer JSON-Serialisierungsmetadaten mithilfe des IJsonTypeInfoResolver anpassen Schnittstelle. Durch die Implementierung dieser Schnittstelle können Entwickler ihre eigenen Vertragslöser erstellen, um anzugeben, welche Eigenschaften serialisiert werden sollen.
Erstellen eines benutzerdefinierten Vertragslösers
Um einen benutzerdefinierten Vertragslöser zu erstellen, der selektiv ist Felder serialisiert, können Sie die folgenden Schritte ausführen:
Definieren Sie fließende Erweiterungsmethoden, um die zu ändern DefaultJsonTypeInfoResolver:
public static DefaultJsonTypeInfoResolver SerializeSelectedFields(this DefaultJsonTypeInfoResolver resolver, IEnumerable<string> membersToSerialize);
Legen Sie den TypeInfoResolver im JsonSerializerOptions fest:
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... };
Beispiel
Der folgende Code zeigt, wie man selektiv serialisiert Eigenschaften „Vorname“, „E-Mail“ und „ID“ mithilfe der Vertragsanpassung:
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... }; // Serialize the object var json = JsonSerializer.Serialize(obj, options);
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonKann System.Text.Json eine selektive Serialisierung wie IContractResolver von Newtonsoft erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!