Heim >Backend-Entwicklung >C++ >Wie serialisiere ich ein PagedResult-Objekt mit Json.Net?

Wie serialisiere ich ein PagedResult-Objekt mit Json.Net?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-07 13:12:41624Durchsuche

How to Serialize a PagedResult Object with Json.Net?

PagedResult mit Json.Net serialisieren

Json.Net behandelt Klassen, die IEnumerable implementieren, als Arrays. Wenn Sie die abgeleitete Klasse mit [JsonObject] dekorieren, werden nur abgeleitete Klassenmitglieder serialisiert und die Liste weggelassen.

Lösung 1: Listeneigenschaft verfügbar machen

Erstellen Sie, wie von Konrad vorgeschlagen, eine öffentliche Eigenschaft für die abgeleitete Klasse, um die Liste verfügbar zu machen:

class PagedResult<T> : List<T>
{
    public IEnumerable<T> Items { get { return this; } }
}

Lösung 2: Benutzerdefiniert JsonConverter

Alternativ können Sie einen benutzerdefinierten JsonConverter erstellen, um das gesamte Objekt zu serialisieren:

class PagedResultConverter<T> : JsonConverter
{
    // ... (implementation as provided in the answer) ...
}

Fügen Sie den Konverter zu den JsonSerializerSettings hinzu:

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new PagedResultConverter<T>());

Beispielverwendung

Hier ist ein Beispiel, das die Verwendung des Konverters demonstriert:

PagedResult<string> result = new PagedResult<string> { "foo", "bar", "baz" };
// ... (populate other properties) ...

string json = JsonConvert.SerializeObject(result, settings);

Ausgabe:

{
  "PageSize": 10,
  "PageIndex": 0,
  "TotalItems": 3,
  "TotalPages": 1,
  "Items": [
    "foo",
    "bar",
    "baz"
  ]
}

Das obige ist der detaillierte Inhalt vonWie serialisiere ich ein PagedResult-Objekt mit 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