Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich JSON mit unbekannten Feldern mithilfe von JsonExtensionDataAttribute?

Wie deserialisiere ich JSON mit unbekannten Feldern mithilfe von JsonExtensionDataAttribute?

Linda Hamilton
Linda HamiltonOriginal
2025-01-18 09:11:09145Durchsuche

How to Deserialize JSON with Unknown Fields Using JsonExtensionDataAttribute?

Umgang mit der JSON-Deserialisierung, die bekannte und unbekannte Felder enthält

Bei der Verarbeitung von JSON-Ergebnissen kommt es häufig vor, dass die empfangenen Daten bekannte Felder sowie andere Felder enthalten, die zum Zeitpunkt der Anforderung unbekannt waren. Dies kann zu Problemen führen, wenn versucht wird, Daten in strukturierte Objekte zu deserialisieren.

Eine Möglichkeit, damit umzugehen, ist die Verwendung einer Bibliothek wie JSON.NET, die benutzerdefinierte Vertragsparser ermöglicht. Allerdings kann die Einrichtung eines benutzerdefinierten Vertragslösers komplex sein.

Eine andere Lösung besteht darin, das JsonExtensionDataAttribute in JSON.NET zu verwenden. Mit dieser Eigenschaft können Sie ein zusätzliches Feld im Objekt angeben, das alle unbekannten Felder aus dem JSON enthält.

Hier ist ein Beispiel für die Verwendung dieser Eigenschaft:

<code class="language-csharp">public class Product
{
    public string Id { get; set; }
    public string Name { get; set; }

    // 此属性将包含来自JSON的所有未知字段
    [JsonExtensionData]
    private IDictionary<string, JToken> ExtraFields { get; set; }
}</code>

Wenn Sie diese Klasse verwenden, um ein JSON-Objekt zu deserialisieren, werden die bekannten Felder (ID und Name) den Eigenschaften des Objekts zugeordnet. Unbekannte Felder werden im ExtraFields-Wörterbuch gespeichert. Sie können dann mit Standard-Wörterbuchoperationen auf diese zusätzlichen Felder zugreifen, zum Beispiel:

<code class="language-csharp">Console.WriteLine(product.ExtraFields["_unknown_field_name_1"]);</code>

Dieser Ansatz vereinfacht die Zuordnung unbekannter Felder durch Nutzung der integrierten Funktionen von JSON.NET. Es erfordert JSON.NET 5 oder höher.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON mit unbekannten Feldern mithilfe von JsonExtensionDataAttribute?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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