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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:37:04