问题
How to serialize Enum fields to String instead of an Int in ASP.NET MVC Core 3.0? I'm not able to do it the old way.
services.AddMvc().AddJsonOptions(opts =>
{
opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter());
})
I'm getting an error:
cannot convert from 'Newtonsoft.Json.Converters.StringEnumConverter' to 'System.Text.Json.Serialization.JsonConverter'
回答1:
New System.Text.Json serialization
ASP.NET MVC Core 3.0 uses built-in JSON serialization. Use System.Text.Json.Serialization.JsonStringEnumConverter
(with "Json" prefix):
services.AddMvc().AddJsonOptions(opts =>
{
opts.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
})
More info here. The documentation can be found here.
If you prefer Newtonsoft.Json
You can also use "traditional" Newtonsoft.Json serialization:
services
.AddControllers()
.AddNewtonsoftJson(opts => opts.Converters.Add(new StringEnumConverter()));
来源:https://stackoverflow.com/questions/59096102/asp-net-mvc-core-3-0-api-serialize-enums-to-string