【发布时间】:2017-06-16 06:01:39
【问题描述】:
我正在开发一个需要返回枚举数组的 API。我将 JSON.NET 与 WebAPI 一起使用,虽然 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 的其余部分不一致,这不需要包装器围绕其结果。
【问题讨论】:
标签: serialization json.net asp.net-web-api2