我有一个包含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" }
最佳答案:
不,没有可以使用的特殊属性。JavaScriptSerializer
serializesenums
to 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