Heim > Backend-Entwicklung > C++ > Wie kann ich bei der Deserialisierung in .NET mit bekannten und unbekannten JSON-Feldern umgehen?

Wie kann ich bei der Deserialisierung in .NET mit bekannten und unbekannten JSON-Feldern umgehen?

DDD
Freigeben: 2025-01-18 09:02:09
Original
564 Leute haben es durchsucht

How Can I Handle Known and Unknown JSON Fields During Deserialization in .NET?

Verarbeitung bekannter und unbekannter JSON-Felder bei der .NET-Deserialisierung

Bei der Verarbeitung von JSON-Daten kommt es häufig zu Situationen, in denen sowohl bekannte als auch unbekannte Felder vorhanden sind. Bekannte Felder können bestimmten Eigenschaften in der Klasse zugeordnet werden, während unbekannte Felder eine besondere Behandlung erfordern, um Datenverluste zu vermeiden.

Verwendung eines benutzerdefinierten Vertragsparsers für JSON .NET

Eine Möglichkeit, unbekannte Felder zu verwalten, besteht darin, einen benutzerdefinierten Vertragsparser in JSON .NET zu nutzen. Dies zu erreichen kann jedoch eine Herausforderung sein.

Einschränkungen des DataContract-Serialisierungsprogramms

Der DataContract-Serializer erlaubt keine überschreibende Deserialisierung und ist daher für diesen Fall nicht geeignet.

Dynamische Objekte und Serialisierung

Serialisierung und Deserialisierung in dynamische Objekte können eine Lösung darstellen, sind jedoch ein langwieriger Prozess und erfordern eine Nachbearbeitung.

DynamicObject-Vererbung

Das Erben von der DynamicObject-Klasse löst das Problem ebenfalls nicht, da der Serialisierer auf Reflektion basiert und keine benutzerdefinierten Methoden für dynamische Objekte aufruft.

Eine einfachere Lösung: JsonExtensionDataAttribute

Anstatt komplexe Techniken zu verwenden, sollten Sie JsonExtensionDataAttribute in JSON .NET (Version 5.0 und höher) in Betracht ziehen. Dieses Attribut ermöglicht die anonyme Speicherung unbekannter Felder in Attributen vom Typ IDictionary<string, JToken>.

<code class="language-csharp">public class Product
{
    public string id { get; set; }
    public string name { get; set; }
    [JsonExtensionData]
    public Dictionary<string, JToken> UnknownFields { get; set; }
}</code>
Nach dem Login kopieren

Mit diesem Ansatz werden die JSON-Daten erfolgreich deserialisiert und über die Klasseninstanz kann auf bekannte und unbekannte Felder zugegriffen werden.

Das obige ist der detaillierte Inhalt vonWie kann ich bei der Deserialisierung in .NET mit bekannten und unbekannten JSON-Feldern umgehen?. 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