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

How to serialize enum as string globally (not by attribute in each enum)?

我正在开发 ASP.NET Core 3.0 网络 API。许多端点 return json 带有枚举。枚举未序列化为字符串,而是序列化为默认整数。

我知道 [JsonConverter(typeof(StringEnumConverter))] 属性。但我正在寻找一个解决方案,我会在全球范围内说 "Every enum returned by this API should be serialized to string, without the need of manually declaring attributes in my model in each and every enum".

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

        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            .AddJsonOptions(op => { op.SerializerSettings.Converters.Add(new StringEnumConverter());});

此代码在 .NETCore3.0 中不起作用,因此我正在寻找一种解决方案,它将始终将枚举全局转换为字符串,而无需在 [=] 中更改或装饰我的模型 类 16=]。

感谢帮助

在 .NET Core 3.0 中,默认不再包含 Newtonsoft.JSON 包。

安装 following package 并尝试像这样添加转换器:

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