gpt4 book ai didi

c# - Web Api,如何从 HttpResponseMessage 返回枚举文本值而不是枚举索引值

转载 作者:太空狗 更新时间:2023-10-30 00:01:19 26 4
gpt4 key购买 nike

我注意到返回 HttpResponseMessage 的 Web Api 方法将枚举值转换为 int(值顺序)。但我想返回枚举文本值。

return Request.CreateResponse(HttpStatusCode.OK, new {MyEnum.Someting, MyEnum.Someting2});

我应该为它设置什么?

最佳答案

如果您返回和接收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 } }); ;
}

允许您指示 json 序列化程序将枚举与其名称字符串值相互转换。

此外,如果您不想定义输出模型,在您的 WebApiConfig.Register(config) 方法中,您可以添加以下行并且也可以工作:

var jsonFormatter = config.Formatters.JsonFormatter;
jsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());

对于 .Net Core Web API 使用这个:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddJsonOptions( op => {
op.SerializerSettings.Converters.Add(new StringEnumConverter());
});

关于c# - Web Api,如何从 HttpResponseMessage 返回枚举文本值而不是枚举索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com