Heim > Backend-Entwicklung > C++ > Kann System.Text.Json eine selektive Serialisierung wie IContractResolver von Newtonsoft erreichen?

Kann System.Text.Json eine selektive Serialisierung wie IContractResolver von Newtonsoft erreichen?

DDD
Freigeben: 2025-01-04 07:57:41
Original
812 Leute haben es durchsucht

Can System.Text.Json Achieve Selective Serialization Like Newtonsoft's IContractResolver?

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:

  1. Definieren Sie fließende Erweiterungsmethoden, um die zu ändern DefaultJsonTypeInfoResolver:

    public static DefaultJsonTypeInfoResolver SerializeSelectedFields(this DefaultJsonTypeInfoResolver resolver, IEnumerable<string> membersToSerialize);
    Nach dem Login kopieren
  2. Legen Sie den TypeInfoResolver im JsonSerializerOptions fest:

    var options = new JsonSerializerOptions
    {
        TypeInfoResolver = new DefaultJsonTypeInfoResolver()
            .SerializeSelectedFields("FirstName,Email,Id"),
        ...
    };
    Nach dem Login kopieren

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);
Nach dem Login kopieren

Zusätzliche Hinweise

  • Verwenden Sie die gebietsschemainvariante Zeichenfolgenlogik, um Erstellen Sie Serialisierungsmetadaten.
  • System.Text.Json unterscheidet standardmäßig zwischen Groß- und Kleinschreibung, daher müssen Sie möglicherweise Eigenschaftsnamen abgleichen Groß- und Kleinschreibung beachten.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage