C# 如何在ASP.NET核心MVC中正确返回嵌套的一对多数据?

C# 如何在ASP.NET核心MVC中正确返回嵌套的一对多数据?,c#,json,asp.net-core,json.net,asp.net-core-mvc,C#,Json,Asp.net Core,Json.net,Asp.net Core Mvc,我有一个MinionLeaders表,与Minions表有一对多关系。一个仆从可以领导n个仆从,如果没有任何成员,它也可以领导自己 问题是,当我试图获取一个成员为json的仆从领袖列表时,它返回一个无序的未完成json: [ { "LeaderID":"ABCD000000000001", "Name":"Foo", "Members":

我有一个
MinionLeaders
表,与
Minions
表有一对多关系。一个仆从可以领导n个仆从,如果没有任何成员,它也可以领导自己

问题是,当我试图获取一个成员为json的仆从领袖列表时,它返回一个无序的未完成json:

[
    {
        "LeaderID":"ABCD000000000001",
        "Name":"Foo",
        "Members":
            [
                {
                    "ID":"EEEE000000000001",
                    "Name":"Fubar",
                    "LeaderID":"ABCD000000000001"
此外,服务器还会抛出一个错误:

Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property 'minionLeader' with type 'rt5_app.Models.MinionLeaders'. Path '[0].Members[0]'.
如何正确返回数据


下面是我如何从数据库
MinionLeadersRepository.cs
获取数据的方法:

公共异步任务ListAsync() { return wait context.MinionLeaders.Include(p=>p.Members) .ToListAsync(); }
ApiController.cs

公共异步任务ListAsync() { return wait_minionLeaders.ListAsync(); }
MinionLeadersModel.cs

公共类迷你领头人
{
[关键]
[秘书长(16)]
[MaxLength(16)]
公共字符串LeaderID{get;set;}
[秘书长(16)]
[MaxLength(16)]
公共字符串名称{get;set;}
公共虚拟列表成员{get;set;}
}

我发现这是一个序列化程序问题。 我通过在
Startup.cs

services.AddMvc()
.AddJsonOptions(x=>x.SerializerSettings.ReferenceLoopHandling=Newtonsoft.Json.ReferenceLoopHandling.Ignore);
但我不确定这是真正的解决方案还是仅仅是一个解决办法