作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 ASP.NET Core 3.0 Web API。许多端点返回带有枚举的 json
。枚举未序列化为字符串,而是序列化为默认整数。
我知道 [JsonConverter(typeof(StringEnumConverter))]
属性。但我正在寻找一个解决方案,我会在全局范围内说“这个 API 返回的每个枚举都应该序列化为 string
,而不需要在我的模型中的每个枚举中手动声明属性” .
直到今天,我一直在使用 .NETCore2.1。我能够通过 Newtonsoft.Json.Converters
和这个中间件实现这一点:
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddJsonOptions(op => { op.SerializerSettings.Converters.Add(new StringEnumConverter());});
此代码在 .NETCore3.0
中不起作用,所以我正在寻找一种解决方案,它将始终将枚举全局转换为字符串,而无需在 中更改或装饰我的模型类>NETCore3.0
。
感谢帮助
最佳答案
在 .NET Core 3.0 中,不再默认包含 Newtonsoft.JSON 包。
安装 following package并尝试像这样添加转换器:
services.AddMvc(...).AddNewtonsoftJson(opt => SerializerSettings.Converters.Add(new StringEnumConverter()));
关于c# - 如何将枚举全局序列化为字符串(而不是每个枚举中的属性)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58737829/
我是一名优秀的程序员,十分优秀!