Maison > développement back-end > C++ > Comment sérialiser une enum .NET en tant que chaîne en JSON à l'aide de JavascriptSerializer?

Comment sérialiser une enum .NET en tant que chaîne en JSON à l'aide de JavascriptSerializer?

DDD
Libérer: 2025-01-29 09:21:14
original
277 Les gens l'ont consulté

How to Serialize a .NET Enum as a String in JSON using JavaScriptSerializer?

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; }
}
Copier après la connexion

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 }
    Copier après la connexion
  • 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 ...
    Copier après la connexion
  • avec JsonConvert: Appliquer le convertisseur directement pendant la sérialisation:

      string json = JsonConvert.SerializeObject(myObject, new StringEnumConverter());
    Copier après la connexion

    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!

Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal