C# - Web API - 将枚举序列化为带空格的字符串

时间:2015-07-30 21:32:29

标签: c# json serialization asp.net-web-api enums

我的问题很简单,但比将枚举类型序列化为字符串的其他问题更具体。

考虑以下代码:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

public enum MyEnum
{
    TypeOne,
    TypeTwo,
    TypeThree
}

public class Foo
{
   [JsonConverter(typeof(StringEnumConverter))]
   public MyEnum Types { get; set; }
}

当Web API控制器发送序列化的Foo对象时,它们可能如下所示:

{
    "Type" : "TypeTwo"
}

我的问题:是否可以在每个大写字母之前将序列化的枚举作为字符串发送?这样的解决方案会产生这样的JSON:

{
    "Type" : "Type Two"
}

如果有任何其他信息需要解决我的问题,请告诉我。谢谢!

修改

最好只将枚举转换为带空格的字符串,同时将它们序列化为 JSON 。我想在后端使用MyEnum.ToString()时排除空格。

2 个答案:

答案 0 :(得分:18)

尝试添加EnumMember,如下所示,

[JsonConverter(typeof(StringEnumConverter))]
public enum MyEnum
{
    [EnumMember(Value = "Type One")]
    TypeOne,
    [EnumMember(Value = "Type Two")]
    TypeTwo,
    [EnumMember(Value = "Type Three")]
    TypeThree
}

您可能需要安装一个名为System.Runtime.Serialization.Primitives的软件包才能使用它。

答案 1 :(得分:-1)

我相信您可以为您的枚举添加一个描述属性,而不是尝试将其拉为序列化。请查看this SO Answer。希望这会有所帮助。

public enum MyEnum
{    
    [Description("Type One")]
    TypeOne,    
    [Description("Type Two")]
    TypeTwo,
    ...
}