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