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

.NET 6中JsonPropertyName/JsonProperty特性失效,接收short_name值为null

解决.NET 6中JSON属性映射失效问题

问题分析

核心问题是序列化特性与项目默认使用的JSON序列化器不匹配:

  • .NET 6默认采用System.Text.Json作为JSON处理库,对应的属性映射特性是[JsonPropertyName]
  • 你代码中使用的[JsonProperty]是Newtonsoft.Json(Json.NET)库的特性,在未配置启用Newtonsoft的情况下不会生效
  • 传入shortName时能正常映射,是因为System.Text.Json默认启用驼峰命名策略,自动将类属性ShortName映射为JSON中的shortName

解决方案

方案1:使用System.Text.Json原生特性(推荐)

修改ProductPayload类的ShortName属性,替换为System.Text.Json对应的特性,并确保引用正确命名空间:

using System.Text.Json.Serialization; // 必须添加此命名空间

public class ProductPayload
{
    public string Id { get; set; }
    [JsonPropertyName("short_name")] // 替换为该特性
    public string ShortName { get; set; }
    // 其余属性保持不变
}

方案2:配置项目使用Newtonsoft.Json

若习惯使用Newtonsoft.Json,按以下步骤配置:

  1. 安装NuGet包:Microsoft.AspNetCore.Mvc.NewtonsoftJson
  2. 修改Startup.cs的ConfigureServices方法,添加NewtonsoftJson支持:
services.AddControllersWithViews()
        .AddNewtonsoftJson(); // 新增此行

此时原代码中的[JsonProperty(PropertyName = "short_name")]特性即可正常生效。


额外验证点

  • 检查是否存在全局序列化配置覆盖属性特性(特性优先级高于全局配置,一般不影响)
  • 确认JSON请求中的short_name拼写完全正确,无大小写或符号错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:40:19