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

ASP.NET Core Web API通过Swagger获取记录时数据缺失问题求助

解决方案

1. 替换默认序列化器为Newtonsoft.Json

你返回的是Newtonsoft.Json的JObject/IEnumerable<JObject>类型,但ASP.NET Core默认用System.Text.Json做序列化,两者不兼容才导致Swagger显示空值。按以下步骤配置:

  • 先安装NuGet包:Microsoft.AspNetCore.Mvc.NewtonsoftJson
  • 在Program.cs里修改控制器服务配置:
builder.Services.AddControllers()
    .AddNewtonsoftJson(); // 把默认序列化器换成Newtonsoft.Json

2. 让Swagger适配Newtonsoft.Json

如果上面的操作没解决问题,需要确保Swagger也用Newtonsoft.Json处理序列化:

  • 安装NuGet包:Swashbuckle.AspNetCore.Newtonsoft
  • 在Program.cs的Swagger配置里添加支持:
builder.Services.AddSwaggerGen(c =>
{
    // 你的其他Swagger配置代码...
})
.AddNewtonsoftJsonSupport(); // 开启Swagger对Newtonsoft.Json的支持

3. 检查JObject的构造逻辑

虽然断点显示有数据,但要确认JObject的字段是正确赋值的,比如用JObject.FromObject()从实体类转换是最稳妥的方式:

// 示例:从Agency实体转换为JObject
var agencyEntity = _dbContext.Agencies.First();
var jObject = JObject.FromObject(agencyEntity);

避免手动构造JObject时出现键值对未正确添加的情况。

4. 临时换实体类返回测试(可选)

可以临时把控制器方法的返回类型改成IEnumerable<Agency>,如果Swagger能正常显示数据,说明问题确实出在JObject和默认序列化器的兼容上。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:39:58