Sérialisation des énumérations .NET en tant que chaînes en JSON avec JavascriptSerializer
Le .NET standard JavaScriptSerializer
produit souvent des énumérations comme valeurs entières dans JSON. Pour les sérialiser comme des chaînes représentant leurs noms, plusieurs méthodes existent.
Méthode 1: Tire de l'expression de JSON.NET StringEnumConverter
L'approche la plus simple et la plus recommandée utilise JSON.NET puissant StringEnumConverter
. Ce convertisseur peut être appliqué au niveau de définition de l'énum ou au niveau de la propriété:
using Newtonsoft.Json; using Newtonsoft.Json.Converters; [JsonConverter(typeof(StringEnumConverter))] public enum Gender { Male, Female } public class Person { public int Age { get; set; } [JsonConverter(typeof(StringEnumConverter))] // Or apply at property level public Gender Gender { get; set; } }
Cela garantit que la propriété Gender
sérialise comme une chaîne ("mâle" ou "femme") dans le JSON résultant.
Méthode 2: Options de configuration globale
Pour une application plus large, configurez le StringEnumConverter
globalement:
au niveau de l'énumération: Appliquez le convertisseur à la définition de l'énum elle-même pour une sérialisation de chaîne cohérente sur toutes les utilisations de cet énumération:
[JsonConverter(typeof(StringEnumConverter))] public enum Gender { Male, Female }
avec JsonSerializer
: Ajoutez le convertisseur à une instance JsonSerializer
spécifique pour affecter uniquement les énumériques sérialisés par cette instance:
var serializer = new JsonSerializer(); serializer.Converters.Add(new StringEnumConverter()); // ... use serializer to serialize your objects ...
avec JsonConvert
: Appliquer le convertisseur directement pendant la sérialisation:
string json = JsonConvert.SerializeObject(myObject, new StringEnumConverter());
Personnalisation de StringEnumConverter
Le constructeur StringEnumConverter
offre une personnalisation supplémentaire, permettant le contrôle des conventions de dénomination et de la gestion des nombres. Reportez-vous à la documentation JSON.NET pour des options détaillées.
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!