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

The*_*mer 13 c# enums serialization json asp.net-web-api

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

考虑以下代码:

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

public enum MyEnum
{
    TypeOne,
    TypeTwo,
    TypeThree
}

public class Foo
{
   [JsonConverter(typeof(StringEnumConverter))]
   public MyEnum Types { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

{
    "Type" : "TypeTwo"
}
Run Code Online (Sandbox Code Playgroud)

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

{
    "Type" : "Type Two"
}
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

Vim*_*esh 20

尝试添加EnumMember,如下所示,

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

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