Arb*_*æde 4 c# enums asp.net-web-api
我注意到我的Web Api方法返回HttpResponseMessage将枚举值转换为int(值的顺序).但我想返回枚举文本值.
return Request.CreateResponse(HttpStatusCode.OK, new {MyEnum.Someting, MyEnum.Someting2});
Run Code Online (Sandbox Code Playgroud)
我应该为它设置什么?
Art*_*aca 13
如果您要返回并接收数据Json,则可以使用StringEnumConverter.定义这样的模型:
class Output
{
[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
public MyEnum[] Enums { get; set; }
}
public HttpResponseMessage Get()
{
return Request.CreateResponse(HttpStatusCode.OK, new Output { Enums = new MyEnum[] { MyEnum.Someting, MyEnum.Someting2 } }); ;
}
Run Code Online (Sandbox Code Playgroud)
允许您指示json序列化程序将枚举转换为其名称字符串值.
此外,如果您不想定义输出模型,在您的WebApiConfig.Register(config)方法中,您可以添加此行并且还可以工作:
var jsonFormatter = config.Formatters.JsonFormatter;
jsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
Run Code Online (Sandbox Code Playgroud)
对于.Net Core Web API使用此:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddJsonOptions( op => {
op.SerializerSettings.Converters.Add(new StringEnumConverter());
});
Run Code Online (Sandbox Code Playgroud)