Maison >développement back-end >C++ >Comment sérialiser un objet PagedResult avec Json.Net ?

Comment sérialiser un objet PagedResult avec Json.Net ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-07 13:12:41612parcourir

How to Serialize a PagedResult Object with Json.Net?

Sérialisation de PagedResult à l'aide de Json.Net

Json.Net traite les classes implémentant IEnumerable comme des tableaux. Décorer la classe dérivée avec [JsonObject] sérialisera uniquement les membres de la classe dérivée, en omettant la liste.

Solution 1 : exposer la propriété de liste

Comme suggéré par Konrad, créez un propriété publique sur la classe dérivée pour exposer la liste :

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

Solution 2 : personnalisée JsonConverter

Vous pouvez également créer un JsonConverter personnalisé pour sérialiser l'objet entier :

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

Ajoutez le convertisseur aux JsonSerializerSettings :

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

Exemple d'utilisation

Voici un exemple démontrant l'utilisation du convertisseur :

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

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

Sortie :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn