如何解决Asp.Net Core Web Api,Json Object不返回Complex对象中的子对象
我有Asp.Net核心3.1 Web Api,其中复杂对象由Json之类的操作返回,问题是返回的对象不包含子对象列表:
对象下方:
public class DepartementViewModel
{
public int Dep_ID { get; set; }
public string Dep_Name { get; set; }
public List<BasicEmpViewModel> listEmployees = new List<BasicEmpViewModel>();
}
和动作
[HttpGet]
public async Task<ActionResult<IEnumerable<DepartementViewModel>>> GetDepartement()
{
IRepository IRepos = new DepartementRepository(_context);
IList<DepartementViewModel> ilIst = await IRepos.GetList();
return Ok(ilIst);
}
存储库GetList函数
public async Task<IList<DepartementViewModel>> GetList()
{
IList<DepartementViewModel> listDept = new List<DepartementViewModel>();
listDept = await(from dept in _context.Departement
orderby dept.Dep_ID ascending
select new DepartementViewModel
{
dept.Dep_ID,dept.Dep_Name
}
).ToListAsync();
listDept.ForEach(x =>
{
var emObj =_context.Employee;
foreach (Employee E in emObj)
{
E.listEmployees.Add(new BasicEmpViewModel()
{
Emp_ID = E.Emp_ID,Emp_Name = E.Emp_Name,Checked = (E.Dep_ID == x.Dep_ID) ? true : false
}
);
}
});
return listDept;
}
返回的Json对象不包含雇员列表“ listEmployees”,它仅显示与主要对象有关的信息:Dep_ID和Dep_Name。
我的代码中是否缺少某些内容?。
谢谢
解决方法
我想也许您正在使用System.Text.Json
库对.net核心应用程序中的数据进行序列化和反序列化,对吗?如果是这样,则问题可能与此库有关。据我所知,当我们使用System.Text.Json
库序列化复杂对象时,它将仅返回外部对象(不包含内部实体)。
要解决此问题,您可以尝试使用Microsoft.AspNetCore.Mvc.NewtonsoftJson
库来序列化数据。请参考以下步骤:
-
通过Nuget安装
Microsoft.AspNetCore.Mvc.NewtonsoftJson
软件包。 -
在Startup.ConfigureServices方法中注册
NewtonsoftJson
:services.AddControllersWithViews().AddNewtonsoftJson();
以下是有关System.Text.Json
和Microsoft.AspNetCore.Mvc.NewtonsoftJson
的一些相关文章,您可以参考它们:
How to serialize and deserialize (marshal and unmarshal) JSON in .NET
How to migrate from Newtonsoft.Json to System.Text.Json
,我找到了解决方案,我针对任何此类问题发布了解决方案。确实有必要在如下所示的DepartementViewModel类中为属性listEmployees放置一个Getter和Setter
public class DepartementViewModel
{
public int Dep_ID { get; set; }
public string Dep_Name { get; set; }
public List<BasicEmpViewModel> listEmployees {get; set; };
}
私下
,进行一些挖掘来查找,但是您的问题是listEmployees
是一个字段。当前,System.Text.Json
仅支持serialization of properties。您需要将listEmployees
更改为属性或使用Newtonsoft.Json
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。