强制框架使用枚举实体名称,而不是它的值

23 浏览
0 Comments

强制框架使用枚举实体名称,而不是它的值

这个问题已经有了答案:

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

我创建了一个ASP.NET MVC 4 Web应用程序。在此应用程序中,我实现了几个REST Web服务,现在我的问题是:是否可以强制对象序列化使用枚举实体名称而不是它们的值?

这是我的枚举类型:

    public enum ReturnCode { OK, InvalidParameter }

这是我得到的:

{
   "returnCode": 0,
   "data": null
}

但这是我想要的:

{
   "returnCode": OK,
   "data": null
}

是否有办法实现这一点?

admin 更改状态以发布 2023年5月24日
0
0 Comments

如果没有更好地了解你的使用模式,很难提出建议...但还是有一些。

将枚举作为私有字段。

构建一个公有的字符串属性,其中getter返回私有枚举字段的实体名称,setter使用Enum.Parse来设置私有字段的值。

0
0 Comments

您可以使用JsonConverter。

JSON.Net的本机JSON专用 StringEnumConverter 在这个问题中提到JSON序列化枚举为字符串

要么注释您的属性:

[JsonConverter(typeof(StringEnumConverter))]
public enum ReturnCode { OK, InvalidParameter }

要么使用WebApi Json.NET自定义日期处理中的配置示例在全局序列化器设置中进行注册。

0