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

C#-Web API-将枚举序列化为带空格的字符串,c#,json,serialization,asp.net-web-api,enums,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 T

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

考虑以下代码:

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"
}
{
    "Type" : "Type Two"
}
我的问题:是否可以将序列化枚举作为字符串发送,每个大写字母前都有空格?这样的解决方案将产生如下JSON:

{
    "Type" : "TypeTwo"
}
{
    "Type" : "Type Two"
}
如果需要任何其他信息来解决我的问题,请告诉我。谢谢

编辑:


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

尝试添加EnumMember,如下所示

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

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

添加EnumMemberAttribute
[EnumMember(“Type Two”)]
有什么作用吗?github上StringEnumConverter的源代码似乎利用了它。我不确定,但您认为使用该属性会对每个
MyEnum.ToString()
方法产生影响吗?这很有效!为了澄清我的编辑,这只会影响JSON序列化。非常感谢。这个()也可能有帮助。枚举顶部的[JsonConverter(typeof(StringEnumConverter))]