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

使用C# Record作为Response DTO返回空响应的问题排查

问题原因及解决办法

核心问题出在JSON序列化器的默认行为上:ASP.NET Core自带的System.Text.Json序列化器,默认只处理带get/set访问器的公共属性,完全忽略公共字段。

你定义的CustomerItsDetailDto Record用的是公共字段:

public record CustomerItsDetailDto
{ 
    public string VirtualVisitStatus;
    public List<CustomerItsTaskDetailDto> TaskDetails;
}

调试时能看到内容非空,是因为调试器直接读取字段值,但序列化器不会把这些字段转换成JSON,所以Postman拿到的就是空响应。

你改成Class后能正常工作,应该是在Class版本里把字段改成了标准属性(比如public string VirtualVisitStatus { get; set; })——属性才是.NET里用来暴露数据的常规方式,序列化器会正常处理。

不用改Class,这样改Record就行

把Record里的字段改成带访问器的公共属性:

public record CustomerItsDetailDto
{ 
    public string VirtualVisitStatus { get; set; }
    public List<CustomerItsTaskDetailDto> TaskDetails { get; set; }
}

如果非要用字段,也可以修改System.Text.Json的配置让它序列化字段,但这不符合.NET的编码惯例,不推荐这么做。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:24:55