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

.NET 6.0中Newtonsoft的JsonProperty特性序列化别名不生效问题

问题根因

ASP.NET Core 6.0 默认使用内置的 System.Text.Json 作为JSON序列化器,你代码里加的[JsonProperty]是Newtonsoft.Json库的特性,默认序列化器无法识别这个特性配置,因此序列化时会直接输出类的原始属性名FileName,不会生效你配置的别名label。

解决方案

你可以根据项目需求二选一:

方案1:继续使用Newtonsoft.Json作为序列化器

  • 先通过NuGet安装和.NET 6版本匹配的包:Microsoft.AspNetCore.Mvc.NewtonsoftJson
  • 修改项目Program.cs里的服务注册代码,将默认序列化器切换为Newtonsoft.Json:
builder.Services.AddControllers()
    .AddNewtonsoftJson();
  • 检查模型类上的[JsonProperty]特性的命名空间引用,确认是using Newtonsoft.Json;下的特性,不要引错其他库的同名特性。

方案2:沿用默认的System.Text.Json序列化器

不需要额外安装包、修改服务配置,直接把模型上的Newtonsoft特性替换成System.Text.Json对应的别名特性即可:

// 先引入对应命名空间
using System.Text.Json.Serialization;

public class FileDto
{
    [JsonPropertyName("label")]
    public string FileName { get; set; }
}
注意事项
  • 如果是手动执行序列化的场景,要确认调用的序列化方法和你用的特性属于同一个库:用Newtonsoft特性就调用JsonConvert.SerializeObject(),用System.Text.Json特性就调用JsonSerializer.Serialize(),库混用会导致特性配置失效。
  • 修改完配置或代码后重启应用,接口即可返回预期的[{"label":"test.pdf"}]格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:06:16