枚举值返回为数字 [重复]

Posted

技术标签:

【中文标题】枚举值返回为数字 [重复]【英文标题】:Enum values returned as numeric [duplicate] 【发布时间】:2014-09-08 13:21:19 【问题描述】:

当我从 javascript 对控制器进行 ajax 调用时,字符串值被正确地自动转换为具有相同名称的枚举字段。 然而,反过来,从控制器返回 Json(),让 enum 字段发送它的数值而不是它的字符串表示形式。

我怎样才能让字符串表示返回到 javascript 而不会过多地入侵序列化程序。以下是我目前拥有的,我认为它会起作用,但事实并非如此。我仍然从 ajax 调用返回 0 或 1。

 [DataContract]
 public enum Uom
 
     [EnumMember(Value="CD")]
     CD = 0,

     [EnumMember(Value="SD")]
     SD
 

【问题讨论】:

接受的答案是在 2010 年。4 年是一段很长的时间,所以我想知道除了弄乱序列化器本身之外是否有任何改变,因为如果是这样的话,它甚至不值得我的情况。然后我将其转换为 javascript 本身,但如果它是一些注释或任何使这项工作的东西,那么它是值得的。 我希望我是在开玩笑,但它仍然适用。 Json() 结果默认使用内置的 .NET JSON 序列化程序,它仍在将枚举序列化为字符串。如果您愿意,可以毫不费力地切换到 JSON.NET。 无赖。好,谢谢。我将在 javascript 端手动转换。 【参考方案1】:

webapiconfig.cs

添加以下内容

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add
                (new Newtonsoft.Json.Converters.StringEnumConverter());

这会将所有枚举更改为字符串。希望这会有所帮助。

【讨论】:

以上是关于枚举值返回为数字 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

枚举不返回值[重复]

获取枚举值[重复]

如何从 EventLogEntryType 枚举中获取 int 值 [重复]

将任何值解析为枚举[重复]

从字符串转换为具有大量值的 Java 枚举 [重复]

如何在枚举中获取枚举值的 int [重复]