1422 votes

Sérialisation JSON d’enum as string

J'ai une classe qui contient un enum de la propriété, et lors de la sérialisation de l'objet à l'aide d' JavaScriptSerializer, mon résultat json contient la valeur entière de l'énumération plutôt que de l' string "nom". Est-il un moyen pour obtenir l'enum comme une chaîne de caractères dans mon json sans avoir à créer une personnalisée JavaScriptConverter? Peut-être il y a un attribut que je pourrais décorer l'enum définition, ou la propriété de l'objet, avec?

À titre d'exemple:

enum Gender { Male, Female }

class Person
{
    int Age { get; set; }
    Gender Gender { get; set; }
}

Souhaité résultat json:

{ "Age": 35, "Gender": "Male" }

2403voto

ob. Points 9631

J’ai trouvé que Json.NET fournit la fonctionnalité exacte je cherche avec un `` attribut

Plus de détails : StringEnumConverter documentation

460voto

Matt Dearing Points 2889

(Veuillez tenir compte du contexte de la question restreinte au JavaScriptSerializer intégré pas Json.NET...)

Non, il n’existe aucun attribut spécial que vous pouvez utiliser. JavaScriptSerializer sérialise enums à leurs valeurs numériques et non leur représentation de la chaîne. Vous devez utiliser la sérialisation personnalisée pour sérialiser l’enum, comme son nom au lieu de la valeur numérique.

182voto

Iggy Points 1277

Ajouter le dessous de votre global.asax pour la sérialisation JSON d’enum c# comme chaîne

33voto

Stephen Kennedy Points 1458

Facile à faire :

29voto

mheyman Points 795

Cette version de la réponse de m. Stephan ne change pas le nom dans le JSON :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X