如何将枚举全局序列化为字符串(而不是每个枚举中的属性)?
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()));
我正在开发 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()));