.NET Core API如何移除JSON响应中的$id等Schema内容?
移除.NET Core API JSON响应中的$id字段
$id字段通常是JSON序列化时启用了引用保留/循环引用处理或者类型信息写入导致的,针对.NET Core常用的两种序列化库,分别提供解决方案:
一、使用System.Text.Json(.NET Core 3.0+默认)
如果你的API用的是默认的System.Text.Json,只需在全局配置中调整序列化选项:
// .NET 6+ 在Program.cs中配置 builder.Services.AddControllers() .AddJsonOptions(options => { // 禁用引用保留,避免生成$id、$ref等字段 options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; // 若你配置了多态类型信息写入,关闭它也能移除$id options.JsonSerializerOptions.TypeInfoResolver = null; });
说明:
ReferenceHandler.IgnoreCycles既会处理循环引用问题,又不会生成$id这类字段;如果不需要处理循环引用,直接设为null也可以。
如果只想针对单个模型移除$id,可以在模型类上添加特性:
[JsonObject(ReferenceHandling = ReferenceHandling.Ignore)] public class YourModel { public Guid Id { get; set; } // 其他属性 }
二、使用Newtonsoft.Json(Json.NET)
如果项目引用了Newtonsoft.Json作为序列化库,调整全局配置如下:
// .NET 6+ 在Program.cs中配置 builder.Services.AddControllers() .AddNewtonsoftJson(options => { // 关闭引用保留处理 options.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.None; });
针对单个模型的话,在类上添加特性即可:
[JsonObject(IsReference = false)] public class YourModel { public Guid Id { get; set; } // 其他属性 }
内容的提问来源于stack exchange,提问作者Kobie
相关产品推荐
相关产品推荐

