You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 8 WebApi中NewtonSoft序列化保留属性大小写问题

解决ASP.NET Core 8 WebApi中Newtonsoft JSON保留属性原大小写的问题

你的问题出在配置对象不匹配:你给AddJsonOptions(对应System.Text.Json)设置了保留原大小写的规则,但实际生效的序列化器是Newtonsoft JSON,而它的配置块是空的,默认会启用驼峰命名策略,所以Error被转成了error。

要解决这个问题,需要在AddNewtonsoftJson的配置中明确禁用驼峰命名,保留属性的原始大小写:

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString;
        options.JsonSerializerOptions.PropertyNamingPolicy = null;
        options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
    })
    .AddNewtonsoftJson(options =>
    {
        // 使用默认契约解析器,保留属性原命名
        options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
    });

补充说明

  • DefaultContractResolver是Newtonsoft的默认解析器,不会对属性名做大小写转换;
  • 如果是强类型模型,也可以通过[JsonProperty("Error")]特性单独指定序列化后的属性名,但匿名对象只能通过全局配置解决;
  • 你之前配置的AddJsonOptions只对System.Text.Json生效,和Newtonsoft JSON的行为无关,可按需保留。

内容的提问来源于stack exchange,提问作者Craig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:57:06