Heim > Backend-Entwicklung > C++ > Wie kann man polymorphe JSON in json.net ohne Typinformationen deserialisieren?

Wie kann man polymorphe JSON in json.net ohne Typinformationen deserialisieren?

Mary-Kate Olsen
Freigeben: 2025-02-02 11:51:09
Original
312 Leute haben es durchsucht

How to Deserialize Polymorphic JSON in Json.NET without Type Information?

Keine Informationsart unter Verwendung von JSON.net Back -sequentialisierte polymorphe JSON -Klasse

Wenn die JSON -Daten verschiedene Arten von Objekten enthalten und keine expliziten Typinformationen haben, steht JSON.NETs Back -Serialization vor Herausforderungen. Um dieses Hindernis zu überwinden, kann ein benutzerdefinierter JsonConverter entwickelt werden, der die entsprechende Klasse sofort nach bestimmten Attributen instanziierte.

Betrachten wir ein Beispiel, bei dem die IMGUR -API -Aufrufe eine Liste zurückgeben, die die in JSON ausgedrückten GalerieImage- und Galeriealbum -Klassen enthält. Aufgrund des Mangels an $ Typ -Attributen ist es nicht möglich, JSON.NET für die Automatisierung zu verwenden. Durch die Verwendung der IS_ALBUM -Eigenschaft können wir diese beiden Kategorien jedoch unterscheiden.

Um benutzerdefinierte JsonConverter zu realisieren, definieren wir unsere Klasse und erstellen einen GalerieItemConverter, wie unten gezeigt:

In der Readjson -Methode des Konverters überprüfen wir die Eigenschaft is_album, um den zu instanziierten Objekttyp zu bestimmen. Verwenden Sie dann einen Serialisierer, um die JSON -Daten in das Objekt zu füllen.
<code class="language-csharp">public abstract class GalleryItem
{
    public string id { get; set; }
    public string title { get; set; }
    public string link { get; set; }
    public bool is_album { get; set; }
}

public class GalleryImage : GalleryItem
{
    // ...
}

public class GalleryAlbum : GalleryItem
{
    public int images_count { get; set; }
    public List<GalleryImage> images { get; set; }
}

public class GalleryItemConverter : JsonConverter
{
    // ...
}</code>
Nach dem Login kopieren

Dies ist ein Beispielprogramm, das die Verwendung dieses Konverters demonstriert:

Die Ausgabe zeigte das Objekt der Deepertalisierung und ihre jeweiligen Attribute, einschließlich des Bildes des Galerie -Bum -Objekts. Der benutzerdefinierte GalerieItemConverter bietet eine Lösung, die ohne explizite Typinformationen serialisiert werden kann, um verschiedene Datenstrukturen effektiv zu verarbeiten.
<code class="language-csharp">List<GalleryItem> items = JsonConvert.DeserializeObject<List<GalleryItem>>(json, new GalleryItemConverter());</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man polymorphe JSON in json.net ohne Typinformationen deserialisieren?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage