views:

615

answers:

2

I have a class that contains an 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" }
+2  A: 

No there is no special attribute you can use. 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.

Matt Dearing
:( thanks anyways
ob
+3  A: 

i've found that Json.NET provides the exact functionality i'm looking for with a StringEnumConverter attribute

[JsonConverter(typeof(StringEnumConverter))]
public Gender Gender { get; set; }
ob