c# - JavaScriptSerializer - 枚举的jSON序列化为字符串

我有一个包含enum属性的类,当使用JavaScriptSerializer对对象进行序列化时,我的JSON结果包含枚举的整数值,而不是它的string名称。有没有一种方法可以在我的json中将枚举作为string获取,而不必创建自定义的JavaScriptConverter?也许有一个属性可以用来修饰enum定义或对象属性?
例如:

enum Gender { Male, Female }

class Person
{
    int Age { get; set; }
    Gender Gender { get; set; }
}

期望的JSON结果:
{ "Age": 35, "Gender": "Male" }


最佳答案:

不,没有可以使用的特殊属性。JavaScriptSerializerserializesenumsto their numeric values and not their string representation.您需要使用自定义序列化将enum序列化为其名称,而不是数字值。
编辑:
正如@omerbakhari json.net所指出的那样,它涵盖了这个用例(通过属性[JsonConverter(typeof(StringEnumConverter))])以及许多其他内置.NET序列化程序无法处理的用例。Here is a link comparing features and functionalities of the serializers