patterncsharpCritical
JavaScriptSerializer - JSON serialization of enum as string
Viewed 0 times
enumserializationjavascriptserializerstringjson
Problem
I have a class that contains an
As an example:
Desired JSON result:
Ideally looking for answer with built-in .NET framework classes, if not possible alternatives (like Json.net) are welcome.
enum property, and upon serializing the object using JavaScriptSerializer, my json result contains the integer value of the enumeration rather than its string "name". Is there a way to get the enum as a string in my json without having to create a custom JavaScriptConverter? Perhaps there's an attribute that I could decorate the enum definition, or object property, with?As an example:
enum Gender { Male, Female }
class Person
{
int Age { get; set; }
Gender Gender { get; set; }
}Desired JSON result:
{ "Age": 35, "Gender": "Male" }Ideally looking for answer with built-in .NET framework classes, if not possible alternatives (like Json.net) are welcome.
Solution
No there is no special attribute you can use.
If you can use JSON.Net instead of
JavaScriptSerializer serializes enums to their numeric values and not their string representation. You would need to use custom serialization to serialize the enum as its name instead of numeric value.If you can use JSON.Net instead of
JavaScriptSerializer than see answer on this question provided by Omer Bokhari: JSON.net covers this use case (via the attribute [JsonConverter(typeof(StringEnumConverter))]) and many others not handled by the built in .net serializers. Here is a link comparing features and functionalities of the serializers.Context
Stack Overflow Q#2441290, score: 467
Revisions (0)
No revisions yet.