.NET 7 Minimal API中NewtonsoftJson的JsonProperty特性失效如何解决?
.NET 7 Minimal API 中使 Newtonsoft.Json 的 [JsonProperty] 特性生效的解决方案
你当前的问题核心是:配置的AddJsonOptions属于System.Text.Json的配置体系,和Newtonsoft.Json的[JsonProperty]特性不兼容,导致特性未生效。以下是具体解决步骤:
1. 安装Newtonsoft.Json集成包
首先需要安装ASP.NET Core与Newtonsoft.Json的官方集成包,通过NuGet或.NET CLI执行:
# NuGet包管理器命令 Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson # 或.NET CLI命令 dotnet add package Microsoft.AspNetCore.Mvc.NewtonsoftJson
2. 替换JSON配置逻辑
在Program.cs中,将原来针对System.Text.Json的AddJsonOptions替换为Newtonsoft.Json的配置入口AddNewtonsoftJson:
修改前的配置代码:
.AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = null; });
修改后的配置代码:
builder.Services.AddControllers() .AddNewtonsoftJson(); // 切换为Newtonsoft.Json的配置体系
如果需要自定义Newtonsoft.Json的序列化规则,可在配置中添加自定义项:
builder.Services.AddControllers() .AddNewtonsoftJson(options => { // 示例:自定义序列化规则,按需添加 // options.SerializerSettings.ContractResolver = new DefaultContractResolver(); });
3. 验证特性生效
完成配置后,你的FileNameRequest类中的[JsonProperty("some_name")]特性会正常生效,请求中传入some_name字段即可正确绑定到SomeName属性,原有端点代码无需修改。
内容的提问来源于stack exchange,提问作者Vadim Tomashevsky
相关产品推荐
相关产品推荐

