Heim >Backend-Entwicklung >C++ >Wie kann ich JSON-Eigenschaften auf Schnittstellenebene in JSON.NET deserialisieren?

Wie kann ich JSON-Eigenschaften auf Schnittstellenebene in JSON.NET deserialisieren?

Barbara Streisand
Barbara StreisandOriginal
2025-01-18 16:06:11950Durchsuche

How Can I Deserialize JSON Interface-Level Properties in JSON.NET?

JSON.NET-Deserialisierung und Schnittstelleneigenschaften: Eine praktische Lösung

Das Deserialisieren von JSON-Daten in C#-Objekte mithilfe von JSON.NET kann beim Umgang mit Eigenschaften von Schnittstellentypen zu Schwierigkeiten führen. Ein häufiger Fehler tritt auf: JSON.NET kann Schnittstellen nicht direkt instanziieren.

Die Lösung liegt in der Nutzung konkreter Klassenparameter im Konstruktor Ihrer Klasse. Dies führt JSON.NET während der Deserialisierung zu den richtigen konkreten Klassen.

Hier ist ein Beispiel:

<code class="language-csharp">public class Visit : IVisit
{
    // Constructor crucial for JSON.NET to identify concrete types for deserialization.
    public Visit(MyLocation location, Guest guest)
    {
        Location = location;
        Guest = guest;
    }

    public long VisitId { get; set; }
    public ILocation Location { get; set; }
    public DateTime VisitDate { get; set; }
    public IGuest Guest { get; set; }
}</code>

Durch die Aufnahme von MyLocation und Guest (konkrete Klassen, die jeweils ILocation und IGuest implementieren) in den Konstruktor kann JSON.NET die JSON-Daten erfolgreich den entsprechenden Typen zuordnen und so das Problem der Schnittstelleninstanziierung überwinden. Dieser Ansatz ermöglicht es Ihnen, die Flexibilität der Schnittstellen beizubehalten und gleichzeitig eine reibungslose Deserialisierung sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Eigenschaften auf Schnittstellenebene in JSON.NET deserialisieren?. 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