Serializing .net enums como cadenas en JSON con JavaScriptSerializer
el estándar .net javascriptSerializer
a menudo genera enumeros como sus valores enteros dentro de JSON. Para serializarlos como cadenas que representan sus nombres, existen varios métodos.
método 1: aprovechando json.net stringenumConverter
El enfoque más directo y recomendado utiliza el poderoso stringenumConverter
. Este convertidor se puede aplicar en el nivel de definición de Enum o en el nivel de propiedad:
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; }
}
Esto garantiza la propiedad género
serializa como una cadena ("hombre" o "mujer") en el JSON resultante.
Método 2: Opciones de configuración global
Para una aplicación más amplia, configure el stringenumConverter
globalmente:
en el nivel enum: Aplique el convertidor a la definición enum en sí para serialización de cadena consistente en todos los usos de ese enum:
[JsonConverter(typeof(StringEnumConverter))]
public enum Gender { Male, Female }
con jsonserializer
: Agregue el convertidor a una instancia específica jsonserializer
para afectar solo los enums serializados por esa instancia:
var serializer = new JsonSerializer();
serializer.Converters.Add(new StringEnumConverter());
// ... use serializer to serialize your objects ...
con jsonConvert
: Aplique el convertidor directamente durante la serialización:
string json = JsonConvert.SerializeObject(myObject, new StringEnumConverter());
personalización de stringenumConverter
El constructor stringenumConverter
ofrece una mayor personalización, permitiendo el control sobre las convenciones de nombres y el manejo de números. Consulte la documentación JSON.NET para obtener opciones detalladas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3