ASP.NET Core Web API返回含List的对象时List字段缺失求助
问题原因及解决办法:List字段未在ASP.NET Core Web API返回结果中序列化
问题根源
ASP.NET Core默认使用System.Text.Json作为JSON序列化器,其默认配置仅序列化类的属性(带get/set访问器的成员),而你的RuleViewDTO中的Formulas是一个公共字段(field),没有定义属性访问器,因此不会被序列化到返回的JSON中。
解决办法
办法1:将字段改为属性(推荐)
这是符合C#封装规范的常规做法,直接给Formulas添加get/set访问器,将其改为属性:
public class RuleViewDTO { // 原有成员保持不变... // 改为属性,添加get/set访问器 public List<ViewParam> Formulas { get; set; } = new List<ViewParam>(); }
修改后重新运行接口,Postman返回的JSON中就会包含Formulas列表数据。
办法2:配置序列化器支持字段序列化
如果因特殊需求必须保留字段形式,可以在项目配置中修改System.Text.Json的序列化选项,允许序列化公共字段:
在Program.cs中更新服务配置:
builder.Services.AddControllers() .AddJsonOptions(options => { // 开启公共字段的序列化支持 options.JsonSerializerOptions.IncludeFields = true; });
此配置会让序列化器处理所有类的公共字段,无需修改RuleViewDTO的代码。
内容的提问来源于stack exchange,提问作者Deviid
相关产品推荐
相关产品推荐

