C# 使用JSON.net将枚举容器序列化为字符串
通过添加属性,可以将WebAPI模型中的枚举字段序列化为字符串:C# 使用JSON.net将枚举容器序列化为字符串,c#,asp.net-web-api,json.net,C#,Asp.net Web Api,Json.net,通过添加属性,可以将WebAPI模型中的枚举字段序列化为字符串: enum Size { Small, Medium, Large } class Example1 { [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] Size Size { get; set; } } 这将序列化到此JSON: { "Size": "Med
enum Size
{
Small,
Medium,
Large
}
class Example1
{
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
Size Size { get; set; }
}
这将序列化到此JSON:
{
"Size": "Medium"
}
{
"Sizes":
[
"Medium",
"Large"
]
}
如何对枚举集合实现相同的操作
class Example2
{
IList<Size> Sizes { get; set; }
}
在我的web应用程序的启动代码中,我将所有枚举序列化为字符串(我更喜欢将枚举名称传递给值,这样会使事情更加健壮) 但我必须承认,我从未在枚举列表上尝试过,所以我不知道它会做什么——也许值得一试
var jsonFormatter = config.Formatters.JsonFormatter;
jsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
您需要使用以下属性:
class Example2
{
[JsonProperty (ItemConverterType = typeof(StringEnumConverter))]
public IList<Size> Sizes { get; set; }
}
类示例2
{
[JsonProperty(ItemConverterType=typeof(StringEnumConverter))]
公共IList大小{get;set;}
}
我可以确认这对枚举列表有效。我的理想解决方案是允许在每个属性的基础上选择加入,但这是可行的,总比没有好。谢谢@Jon Eric Athari的解决方案也很有效,将为您提供所需的每个属性选择。但它似乎对字典不起作用:/因此,如何实际填充大小
?非常感谢您,我已经在这方面花了一天半的时间,我如何使用[EnumMember(Value=“?”)EMPTY='?'
,以便我的模型(对于[FromBody]
)可以使用类似于以下数组的属性来反映json:['X','?','X']
,产生:[MyEnum.X,MyEnum.EMPTY,MyEnum.X]
?