我的问题很简单,但比将枚举类型序列化为字符串的其他问题更具体。
考虑以下代码:
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()
时排除空格。
答案 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,
...
}