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
DDDoriginal
2025-01-29 09:21:14279parcourir

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é:

<code class="language-csharp">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; }
}</code>

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:

    <code class="language-csharp">  [JsonConverter(typeof(StringEnumConverter))]
      public enum Gender { Male, Female }</code>
  • avec JsonSerializer: Ajoutez le convertisseur à une instance JsonSerializer spécifique pour affecter uniquement les énumériques sérialisés par cette instance:

    <code class="language-csharp">  var serializer = new JsonSerializer();
      serializer.Converters.Add(new StringEnumConverter());
      // ... use serializer to serialize your objects ...</code>
  • avec JsonConvert: Appliquer le convertisseur directement pendant la sérialisation:

    <code class="language-csharp">  string json = JsonConvert.SerializeObject(myObject, new StringEnumConverter());</code>

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:
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