[英]JSon within a JSon .net core
我是 .net 核心编程的新手。
我需要在 .net 核心 MVC 中的 Json 对象中返回一个 Json 对象。 我想返回一个列表时间表和属于该时间表的团队的信息。
截至目前,我正在使用此代码获得此输出。
对于时间表:
控制器中的代码
[HttpGet]
public async Task<List<Schedules>> getAllScheds(){
return await _context.Schedules.ToListAsync();
}
输出
[
{
"scheduleId": 43,
"teamId1": 1,
"teamId2": 3,
"scheduleDate": "2016-04-30T19:00:00",
"week": "1",
"stadiumId": 3,
"createdBy": null,
"createdDate": "2016-07-07T13:09:32.797"
},
{
"scheduleId": 44,
"teamId1": 7,
"teamId2": 6,
"scheduleDate": "2016-05-01T16:00:00",
"week": "1",
"stadiumId": 6,
"createdBy": null,
"createdDate": "2016-07-07T13:13:10.183"
},
{
"scheduleId": 45,
"teamId1": 2,
"teamId2": 4,
"scheduleDate": "2016-05-02T22:00:00",
"week": "1",
"stadiumId": 4,
"createdBy": null,
"createdDate": "2016-07-07T13:16:23.337"
}
]
团队信息
控制器中的代码
[HttpGet]
public async Task<List<Teams>> getAllTeamsInfo(){
return await _context.Teams.ToListAsync();
}
输出
[
{
"teamId": 1,
"city": "Virginia",
"teamName": "Armada",
"sImage": "/images/teams-logo-small/virginia.png"
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58"
},
{
"teamId": 2,
"city": "Arkansas",
"teamName": "Attack",
"sImage": "/images/teams-logo-small/arkansas.png"
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58"
},
{
"teamId": 3,
"city": "Florida",
"teamName": "Fusion",
"sImage": "/images/teams-logo-small/florida.png"
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58",
"modifiedBy": null
}
]
现在我想合并它们并有这个输出。
[
{
"scheduleId": 43,
"teamId1": [{
"teamId": 1,
"city": "Virginia",
"teamName": "Armada",
"sImage": "/images/teams-logo-small/virginia.png"
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58"
}],
"teamId2": [{
"teamId": 3,
"city": "Florida",
"teamName": "Fusion",
"sImage": "/images/teams-logo-small/florida.png"
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58",
"modifiedBy": null
}],
"scheduleDate": "2016-04-30T19:00:00",
"week": "1",
"stadiumId": 3,
"createdBy": null,
"createdDate": "2016-07-07T13:09:32.797"
},
{
"scheduleId": 44,
"teamId1": [{
"teamId": 7,
"city": "Oklahoma",
"teamName": "Nation",
"sImage": "/images/teams-logo-small/oklahoma.png",
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58"
}],
"teamId2": [{
"teamId": 6,
"city": "Texas",
"teamName": "Independence",
"sImage": "/images/teams-logo-small/texas.png",
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58"
}],
"scheduleDate": "2016-05-01T16:00:00",
"week": "1",
"stadiumId": 6,
"createdBy": null,
"createdDate": "2016-07-07T13:13:10.183"
},
{
"scheduleId": 45,
"teamId1": [{
"teamId": 2,
"city": "Arkansas",
"teamName": "Attack",
"sImage": "/images/teams-logo-small/arkansas.png",
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58"
}],
"teamId2": [{
"teamId": 4,
"city": "Oregon",
"teamName": "Crash",
"sImage": "/images/teams-logo-small/oregon.png",
"createdBy": null,
"createdDate": "2016-06-22T10:03:35.58",
}],
"scheduleDate": "2016-05-02T22:00:00",
"week": "1",
"stadiumId": 4,
"createdBy": null,
"createdDate": "2016-07-07T13:16:23.337"
}
]
我想返回整个团队信息而不是团队 ID。
非常感谢。
如果您的 Schedules 模型中没有 Team 导航属性,则必须先添加它们:
public class Schedules {
[ForeignKey("Team1Id")]
public Team Team1 {get;set;}
[ForeignKey("Team2Id")]
public Team Team2 {get;set;}
}
然后您可以在查询中使用 Include(s=>s.Team1).ThenInclude(s=>s.Team2) 。
另一种方法是创建一个代表您想要的值的新模型。 这将是您的控制器方法的结果。 例如:
public class ScheduleDTO:Schedule {
public Team Team1 {get;set;}
public Team Team2 {get;set;}
}
在请求中,您为每个计划选择这个新模型:
[HttpGet]
public async Task<List<ScheduleDTO>> getAllScheds(){
return await _context.Schedules.Select(s=>new ScheduleDTO() {
scheduleId: s.Id,
teamId1: s.Team1Id,
teamId2: s.Team2Id,
scheduleDate: "2016-04-30T19:00:00",
week: "1",
stadiumId: 3,
createdBy: null,
createdDate: "2016-07-07T13:09:32.797",
Team1:s.Team1,
Team2:_context.Teams.FirstOrDefault(x=>x.Id==s.Team1Id) //not recommended
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.