我正在开发一个需要返回枚举数组的API。我正在使用 WebAPI JSON.NET,虽然 StringEnumConverter 足以将枚举的属性转换为它们的字符串值,但它不会转换只是一个枚举数组的结果,而是只返回整数值。
因此,如果我的端点如下所示:
[RoutePrefix("Items")]
public class ItemsController : ApiController
{
[HttpGet][Route("")]
public IHttpActionResult Get()
{
var items = Enum.GetValues(typeof(Items))
.Cast<Items>()
.ToList()
return Ok(items);
}
}
public enum Items
{
First = 0,
Second = 1,
Third = 2
}
然后给GET /Items
当前返回[ 0, 1, 2 ]
;我想得到的是[ "First", "Second", "Third" ]
。
我不想做的是在结果周围放一个包装器:
public class ItemsList
{
[JsonProperty("Items", ItemConverterType=typeof(StringEnumConverter))]
public List<Items> Items { get;set;
}
虽然它在技术上可能有效,但会导致此端点与 API 的其余部分不一致,而 API 的其余部分不需要包装器绕过其结果。
尝试将 StringEnumConverter 添加到您的 WebApiConfig 中
public static void Register(HttpConfiguration config)
{
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
//...........................................
}