将枚举数组序列化为 JSON.NET 中的字符串值



我正在开发一个需要返回枚举数组的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());
          //...........................................
}

相关内容

  • 没有找到相关文章

最新更新