Maison >développement back-end >C++ >Comment sérialiser un objet PagedResult avec 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!