C# 如何将枚举全局序列化为字符串(而不是按每个枚举中的属性)?

C# 如何将枚举全局序列化为字符串(而不是按每个枚举中的属性)?,c#,asp.net-web-api,.net-core,asp.net-core-webapi,asp.net-core-3.0,C#,Asp.net Web Api,.net Core,Asp.net Core Webapi,Asp.net Core 3.0,我正在开发ASP.NETCore3.0WebAPI。许多端点返回带有枚举的json。枚举未序列化为字符串,而是作为默认整数 我知道[JsonConverter(typeof(StringEnumConverter))]属性。但我正在寻找一个解决方案,在这里我会全局地说“此API返回的每个枚举都应该序列化为字符串,而不需要在每个枚举中手动声明模型中的属性” 直到今天,我一直在使用.NETCore2.1。我能够通过Newtonsoft.Json.Converters和这个中间件实现这一点:

我正在开发ASP.NETCore3.0WebAPI。许多端点返回带有枚举的
json
。枚举未序列化为字符串,而是作为默认整数

我知道
[JsonConverter(typeof(StringEnumConverter))]
属性。但我正在寻找一个解决方案,在这里我会全局地说“此API返回的每个枚举都应该序列化为
字符串
,而不需要在每个枚举中手动声明模型中的属性”

直到今天,我一直在使用.NETCore2.1。我能够通过
Newtonsoft.Json.Converters
和这个中间件实现这一点:

        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddJsonOptions(op => { op.SerializerSettings.Converters.Add(new StringEnumConverter());});
此代码在
.NETCore3.0
中不起作用,因此我正在寻找一种解决方案,该解决方案可以始终将enum全局转换为字符串,而无需在
NETCore3.0
中更改或修饰我的模型类


感谢.NET Core 3.0中的帮助,默认情况下不再包括Newtonsoft.JSON包

安装并尝试按以下方式添加转换器:

services.AddMvc(...).AddNewtonsoftJson(opt => SerializerSettings.Converters.Add(new StringEnumConverter()));

谢谢,但我再也没有
AddMvc()
。在bear API中,我们应该使用
AddControllers()
now@AdamWojnarAddNewtonsoftJson()扩展方法也应该在那里可用。对于类似的问题,还有一个很好的答案: