我有一个包含enum属性的类,并且在使用 序列化对象时JavaScriptSerializer,我的 json 结果包含枚举的整数值而不是它的string“名称”。有没有办法将枚举作为string我的 json 中的 a 而不必创建自定义JavaScriptConverter?也许有一个属性可以用来装饰enum定义或对象属性?
enum
JavaScriptSerializer
string
JavaScriptConverter
举个例子:
enum Gender { Male, Female } class Person { int Age { get; set; } Gender Gender { get; set; } }
所需的 JSON 结果:
{ "Age": 35, "Gender": "Male" }
理想情况下寻找内置 .NET 框架类的答案,如果不可能的话(如 Json.net)是受欢迎的。
不,没有可以使用的特殊属性。JavaScriptSerializer序列化为enums它们的数值而不是它们的字符串表示。您需要使用自定义序列化将 序列化enum为其名称而不是数值。
enums
如果您可以使用 JSON.Net 而JavaScriptSerializer不是查看OmerBakhari提供的关于此问题的答案:JSON.net 涵盖了此用例(通过属性)以及许多其他未由内置 .net 序列化程序处理的用例。这是一个比较序列化程序的特性和功能的链接。[JsonConverter(typeof(StringEnumConverter))]
[JsonConverter(typeof(StringEnumConverter))]