在 .NET Core 3 Startup 中无法使用 ContractResolver 是因为在该版本的 .NET Core 中,Microsoft.AspNetCore.Mvc.NewtonsoftJson(Microsoft.AspNetCore.Mvc.Core) 这个包已经过时,不再支持 Newtonsoft.Json 的 ContractResolver。
ContractResolver 是 Newtonsoft.Json 库中的一个重要组件,它负责解析 JSON 对象和 .NET 类型之间的映射关系,控制序列化和反序列化过程中属性的选择和转换规则。然而,从 .NET Core 3 开始,微软推出了自己的 JSON 序列化库 System.Text.Json,并且成为 .NET Core 的默认选项,因此不再支持使用 Newtonsoft.Json 的相关功能。
要在 .NET Core 3 Startup 中使用自定义的 ContractResolver 功能,可以考虑以下替代方案:
需要注意的是,尽管可以使用上述方案解决问题,但由于微软将 System.Text.Json 设计为默认的 JSON 序列化库,推荐在 .NET Core 3 及更高版本中使用它,以便最大程度地享受到微软团队对性能和安全性的优化。如果使用 Newtonsoft.Json 的特定功能非常必要,那么可以选择手动添加 Newtonsoft.Json 支持,但需要权衡性能和依赖问题。
领取专属 10元无门槛券
手把手带您无忧上云