Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich JSON mit Schnittstelleneigenschaften in JSON.NET?

Wie deserialisiere ich JSON mit Schnittstelleneigenschaften in JSON.NET?

Susan Sarandon
Susan SarandonOriginal
2025-01-18 16:11:15948Durchsuche

How to Deserialize JSON with Interface Properties in JSON.NET?

Umwandeln von Schnittstellen für die Deserialisierung in JSON.NET

Bei der Arbeit mit JSON.NET zur Deserialisierung tritt ein häufiges Problem auf, wenn es um Klassen geht, die enthalten Eigenschaften auf Schnittstellenebene. Der Fehler „Es konnte keine Instanz des Typs IThingy erstellt werden. Der Typ ist eine Schnittstelle oder abstrakte Klasse und kann nicht instanziiert werden“ weist darauf hin, dass JSON.NET eine Schnittstelle nicht deserialisieren kann.

Um dieses Problem zu beheben, verwenden Sie die vorgeschlagene Lösung von @SamualDavis in einem ähnlichen Thread:

  1. Beziehen Sie konkrete Klassen als Konstruktor ein Parameter:

    Wenn Sie die Klasse deklarieren, die über Schnittstelleneigenschaften verfügt, schließen Sie die konkreten Klassen als Parameter für ihren Konstruktor ein. Auf diese Weise kann JSON.NET die spezifischen Klassen identifizieren, die während der Deserialisierung verwendet werden sollen.

  2. Konstruktorbeispiel:

    public class Visit : IVisit
    {
        /// <summary>
        /// This constructor is required for the JSON deserializer to be able
        /// to identify concrete classes to use when deserializing the interface properties.
        /// </summary>
        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; }
    }

Durch die Befolgung dieses Ansatzes kann JSON.NET JSON-Objekte erfolgreich in Ihre C#-Objekte deserialisieren, selbst wenn diese Objekte auf Schnittstellenebene enthalten Eigenschaften.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON mit Schnittstelleneigenschaften in JSON.NET?. 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