Heim >Backend-Entwicklung >C++ >Wie kann ich bei der Deserialisierung in .NET mit bekannten und unbekannten JSON-Feldern umgehen?
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.
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.
Der DataContract-Serializer erlaubt keine überschreibende Deserialisierung und ist daher für diesen Fall nicht geeignet.
Serialisierung und Deserialisierung in dynamische Objekte können eine Lösung darstellen, sind jedoch ein langwieriger Prozess und erfordern eine Nachbearbeitung.
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.
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>
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!