ASP.NET MVC 核心 API 将枚举序列化为字符串
ASP.NET MVC Core API Serialize Enums to String
如何在 ASP.NET MVC Core 3.0 中将 Enum 字段序列化为 String 而不是 Int?我无法以旧方式做到这一点。
services.AddMvc().AddJsonOptions(opts =>
{
opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter());
})
我遇到一个错误:
cannot convert from 'Newtonsoft.Json.Converters.StringEnumConverter'
to 'System.Text.Json.Serialization.JsonConverter'
新System.Text.Json连载
ASP.NET MVC Core 3.0 使用内置的 JSON 序列化。使用 System.Text.Json.Serialization.JsonStringEnumConverter
(带有“Json”前缀):
services
.AddMvc()
// Or .AddControllers(...)
.AddJsonOptions(opts =>
{
var enumConverter = new JsonStringEnumConverter();
opts.JsonSerializerOptions.Converters.Add(enumConverter);
})
更多信息here. The documentation can be found here。
如果你喜欢Newtonsoft.Json
也可以使用“传统”Newtonsoft.Json序列化:
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
然后:
services
.AddControllers()
.AddNewtonsoftJson(opts => opts
.Converters.Add(new StringEnumConverter()));
一些补充:
如果使用 Newtonsoft.Json
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
services
.AddControllers()
.AddNewtonsoftJson(options =>
options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()));
options.SerializerSettings.Converters
SerializerSettings
是必须的
如果您有 Minimal API
这将很有用:
using System.Text.Json.Serialization;
builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(opt =>
{
opt.SerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
如果您使用 Aspnet Core MVC 和最小 API 使用这个:
services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(o => o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
如何在 ASP.NET MVC Core 3.0 中将 Enum 字段序列化为 String 而不是 Int?我无法以旧方式做到这一点。
services.AddMvc().AddJsonOptions(opts =>
{
opts.JsonSerializerOptions.Converters.Add(new StringEnumConverter());
})
我遇到一个错误:
cannot convert from 'Newtonsoft.Json.Converters.StringEnumConverter' to 'System.Text.Json.Serialization.JsonConverter'
新System.Text.Json连载
ASP.NET MVC Core 3.0 使用内置的 JSON 序列化。使用 System.Text.Json.Serialization.JsonStringEnumConverter
(带有“Json”前缀):
services
.AddMvc()
// Or .AddControllers(...)
.AddJsonOptions(opts =>
{
var enumConverter = new JsonStringEnumConverter();
opts.JsonSerializerOptions.Converters.Add(enumConverter);
})
更多信息here. The documentation can be found here。
如果你喜欢Newtonsoft.Json
也可以使用“传统”Newtonsoft.Json序列化:
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
然后:
services
.AddControllers()
.AddNewtonsoftJson(opts => opts
.Converters.Add(new StringEnumConverter()));
一些补充:
如果使用 Newtonsoft.Json
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
services
.AddControllers()
.AddNewtonsoftJson(options =>
options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()));
options.SerializerSettings.Converters
SerializerSettings
是必须的
如果您有 Minimal API
这将很有用:
using System.Text.Json.Serialization;
builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(opt =>
{
opt.SerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
如果您使用 Aspnet Core MVC 和最小 API 使用这个:
services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(o => o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));