sérialisation .net enums en tant que chaînes en json avec javascriptSerializer
Le standard .net javascriptSerializer
produit souvent des énumérations en tant que valeurs entières dans JSON. Pour les sérialiser en tant que chaînes représentant leurs noms, plusieurs méthodes existent.
Méthode 1: levier json.net stringNenumConverter
L'approche la plus simple et la plus recommandée utilise le puissant stringNenumConverter de JSON.net
. Ce convertisseur peut être appliqué au niveau de définition de l'énum ou au niveau de 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é sexe
sérialise comme une chaîne ("mâle" ou "femelle") dans le JSON résultant.
Méthode 2: Options de configuration globale
pour une application plus large, configurez le stringNenumConverter
globalement:
Au niveau de l'énumération: appliquez le convertisseur à la définition de l'énum elle-même pour la sérialisation de chaîne cohérente sur toutes les utilisations de cet enum:
[JsonConverter(typeof(StringEnumConverter))]
public enum Gender { Male, Female }
avec jsonSerializer
: Ajoutez le convertisseur à une instance spécifique jsonSerializer
pour affecter uniquement les enums sérialisés par cette instance:
var serializer = new JsonSerializer();
serializer.Converters.Add(new StringEnumConverter());
// ... use serializer to serialize your objects ...
avec JSONConvert
: Appliquez directement le convertisseur pendant la sérialisation:
string json = JsonConvert.SerializeObject(myObject, new StringEnumConverter());
Personnalisation de stringNenumConverter
Le constructeur stringNenumConverter
offre une personnalisation supplémentaire, permettant un contrôle sur les conventions de dénomination et la manipulation des nombres. Reportez-vous à la documentation JSON.NET pour des options détaillées.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3