ASP.NET MVC Core 3.0 API将枚举序列化为字符串


13

如何在ASP.NET MVC Core 3.0中将Enum字段序列化为String而不是Int?我不能用旧的方式做。

services.AddMvc().AddJsonOptions(opts =>
{
    opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter());
})

我收到一个错误:

无法从“ Newtonsoft.Json.Converters.StringEnumConverter”转换为“ System.Text.Json.Serialization.JsonConverter”


ASP.NET Core 3.0不包含JSON.NET,这意味着您必须在尝试使用此代码之前显式添加软件包
Panagiotis Kanavos

Answers:


28

新的System.Text.Json序列化

ASP.NET MVC Core 3.0使用内置的JSON序列化。使用System.Text.Json.Serialization.JsonStringEnumConverter(带有“ Json”前缀):

services
    .AddMvc()
    // Or .AddControllers(...)
    .AddJsonOptions(opts =>
    {
        opts.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
    })

更多信息在这里。该文档可在此处找到。

如果您更喜欢Newtonsoft.Json

您还可以使用“传统的” Newtonsoft.Json序列化:

services
    .AddControllers()
    .AddNewtonsoftJson(opts => opts.Converters.Add(new StringEnumConverter()));

6
如果您具有Web API,则.AddMvc()也可以使用services.AddControllers().AddJsonOptions(...)
Tobias
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.