Heim > Backend-Entwicklung > C++ > Wie serialisiere ich abgeleitete Listenklassen in Json.Net?

Wie serialisiere ich abgeleitete Listenklassen in Json.Net?

Barbara Streisand
Freigeben: 2025-01-07 12:56:40
Original
427 Leute haben es durchsucht

How to Serialize Derived List Classes in Json.Net?

Verstehen der Herausforderung der Serialisierung abgeleiteter Listenklassen in Json.Net

Beim Arbeiten mit einer von List abgeleiteten Klasse, wie z ein PagedResult -Klasse können Probleme mit der Json.Net-Serialisierung auftreten. Standardmäßig behandelt Json.Net Klassen, die IEnumerable implementieren, als Arrays. Durch das Markieren der abgeleiteten Klasse mit den Attributen [JsonObject] und [JsonProperty] werden jedoch nur die Mitglieder der abgeleiteten Klasse serialisiert, mit Ausnahme der Liste selbst.

Das Dilemma überwinden: Zwei Ansätze

Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:

Option 1: Stellen Sie die Liste als bereit Öffentliche Eigenschaft

Sie können in Ihrer abgeleiteten Klasse eine öffentliche Eigenschaft erstellen, um die Liste verfügbar zu machen. Beispielsweise könnten Sie in PagedResult eine Eigenschaft hinzufügen: public List Artikel { get; Satz; }. Dadurch können sowohl die abgeleiteten Klassenmitglieder als auch die Liste serialisiert werden.

Option 2: Verwenden Sie einen benutzerdefinierten JsonConverter

Alternativ können Sie einen benutzerdefinierten JsonConverter zur Verarbeitung schreiben die Serialisierung wie gewünscht. Hier ist ein Beispielkonverter für PagedResult:

class PagedResultConverter<T> : JsonConverter
{
    // Override methods for writing and reading JSON
    // For brevity, only the `WriteJson` method is shown here
    
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        PagedResult<T> result = (PagedResult<T>)value;
        // Create a JSON object to represent the PagedResult
        // Add both derived class members and list items to the object
        // Write the object to the writer
    }
}
Nach dem Login kopieren

In diesem Konverter haben wir die vollständige Kontrolle über den Serialisierungsprozess und stellen sicher, dass sowohl die abgeleiteten Klassenmitglieder als auch die Liste in der JSON-Ausgabe enthalten sind.

Demo und Fazit

Hier ist eine Demo, die den benutzerdefinierten Konverter veranschaulicht in Aktion:

// Assume a `PagedResult<string>` class definition
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new PagedResultConverter<string>());
string json = JsonConvert.SerializeObject(result, settings);
Nach dem Login kopieren

Durch die Verwendung beider Ansätze können Sie sowohl die abgeleiteten Klassenmitglieder als auch die Liste effektiv serialisieren und so Ihre Serialisierungsanforderungen in Json.Net erfüllen.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich abgeleitete Listenklassen in Json.Net?. 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