一尘不染

JavaScriptSerializer-枚举的JSON序列化为字符串

c#

我有一个包含enum属性的类,并使用序列化对象后JavaScriptSerializer,我的json结果包含枚举的整数值而不是其string“名称”。有没有一种方法可以string在我的json中获取枚举而无需创建自定义JavaScriptConverter?也许有一个属性可以用来装饰enum定义或对象属性?

举个例子:

enum Gender { Male, Female }

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

所需的json结果:

{ "Age": 35, "Gender": "Male" }

理想情况下,使用内置的.NET框架类寻找答案,如果可能的话,欢迎使用替代方法(如Json.net)。


阅读 313

收藏
2020-05-19

共1个答案

一尘不染

不,没有可以使用的特殊属性。JavaScriptSerializer序列化enums为其数值而不是其字符串表示形式。您将需要使用自定义序列化来序列化enum其名称(而不是数字值)。


如果您可以使用JSON.Net而不是JavaScriptSerializer不愿看到
关于这个问题的答案提供OmerBakhari:JSON.net涵盖这种使用情况下(通过属性[JsonConverter(typeof(StringEnumConverter))])和许多其他.NET序列化没有内置处理。这是一个比较串行器特性和功能的链接

2020-05-19