By default, when you serialize an enum
in C# using the JavaScriptSerializer
class, it will be converted to its underlying integer value. However, if you want to serialize the enum
as a string instead, you can use the StringEnumConverter
class provided by the Newtonsoft.Json library (also known as Json.NET). Here's an example:
using System.Web.Script.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; public enum Fruit { Apple, Banana, Cherry } public class FruitBasket { public int Id { get; set; } [JsonConverter(typeof(StringEnumConverter))] public Fruit FavoriteFruit { get; set; } } class Program { static void Main(string[] args) { FruitBasket basket = new FruitBasket() { Id = 1, FavoriteFruit = Fruit.Banana }; JavaScriptSerializer serializer = new JavaScriptSerializer(); string json = JsonConvert.SerializeObject(basket); Console.WriteLine(json); } }
In this example, we define an enum
called Fruit
and a class called FruitBasket
that has an Id
property and a FavoriteFruit
property of type Fruit
. We then mark the FavoriteFruit
property with the StringEnumConverter
attribute provided by Json.NET.
Finally, in the Main
method, we create a new instance of FruitBasket
, set its properties, and then use the JsonConvert.SerializeObject
method to serialize the object to JSON. The StringEnumConverter
attribute causes the Fruit
value to be serialized as a string instead of an integer.
The resulting JSON output should look something like this:
{"Id":1,"FavoriteFruit":"Banana"}
"C# JavaScriptSerializer serialize enum as string"
JavaScriptSerializer
in C#.// C# Code [JsonConverter(typeof(StringEnumConverter))] public enum MyEnum { Value1, Value2, Value3 }
"JavaScriptSerializer serialize enum as string with custom attribute in C#"
JavaScriptSerializer
in C#.// C# Code [JsonEnumStringValue("stringValue")] public enum MyEnum { Value1, Value2, Value3 }
"C# JavaScriptSerializer enum string serialization globally"
JavaScriptSerializer
to serialize all enums as strings.// C# Code (in global configuration or startup) JavaScriptSerializer.DefaultSerializer.RegisterConverters(new[] { new StringEnumConverter() });
"JavaScriptSerializer serialize enum with camelCase string values in C#"
JavaScriptSerializer
in C#.// C# Code [JsonEnumCaseTransform(EnumCaseTransform.CamelCase)] public enum MyEnum { Value1, Value2, Value3 }
"Custom JavaScriptSerializer enum serialization logic in C#"
JavaScriptSerializer
in C#.// C# Code (using a custom converter) JavaScriptSerializer.DefaultSerializer.RegisterConverters(new[] { new CustomEnumConverter() });
"C# JavaScriptSerializer serialize enum as integer globally"
JavaScriptSerializer
to serialize all enums as integers.// C# Code (in global configuration or startup) JavaScriptSerializer.DefaultSerializer.RegisterConverters(new[] { new IntegerEnumConverter() });
"JavaScriptSerializer serialize enum as string with attribute and custom logic in C#"
JavaScriptSerializer
in C#.// C# Code [JsonEnumStringValue("stringValue", SpecialHandling = true)] public enum MyEnum { Value1, Value2, Value3 }
"C# JavaScriptSerializer enum serialization with custom naming strategy"
JavaScriptSerializer
in C#.// C# Code (using a custom naming strategy) JavaScriptSerializer.DefaultSerializer.RegisterConverters(new[] { new CustomEnumNamingStrategy() });
"JavaScriptSerializer serialize enum as string only for certain properties in C#"
JavaScriptSerializer
in C#.// C# Code (using [JsonConverter] attribute on specific property) [JsonConverter(typeof(StringEnumConverter))] public MyEnum EnumProperty { get; set; }
"C# JavaScriptSerializer serialize enum with custom string values"
JavaScriptSerializer
in C#.// C# Code [JsonEnumStringValue("CustomValue1")] public enum MyEnum { Value1, Value2, Value3 }
activity-indicator flask-restful dbeaver case-sensitive sniffing readonly-attribute lan nco unity-container construct