【发布时间】:2015-02-03 21:12:23
【问题描述】:
我正在处理由 web api 返回的 JSON 结构,但是有一个问题。
比如说,我有两张桌子,Teams 和 Players。他们由TeamID 加入(团队为PK,玩家为FK)。
我希望我的 API 调用返回一些类似于以下的 JSON 格式:
[
{
TeamId: 1,
TeamName: 'Chicago Bulls',
TeamPlayers: [
{PlayerId: 1, PlayerName: 'Pau Gasol'},
{PlayerId: 2, PlayerName: 'Derrick Rose'},
{PlayerId: 3, PlayerName: 'Joakim Noah'},
{PlayerId: 4, PlayerName: 'Jimmy Butler'},
{PlayerId: 5, PlayerName: 'Taj Gibson'}]
},
{
TeamId: 2,
TeamName: 'Cleveland Cavaliers',
TeamPlayers: [
{PlayerId: 1, PlayerName: 'Lebron James'},
{PlayerId: 2, PlayerName: 'Kyrie Irving'},
{PlayerId: 3, PlayerName: 'Anderson Varejao'},
{PlayerId: 4, PlayerName: 'Dion Waiters'},
{PlayerId: 5, PlayerName: 'Shawn Marion'}]
},
{
TeamId: 3,
TeamName: 'Los Angeles Clippers',
TeamPlayers: [
{PlayerId: 1, PlayerName: 'Chris Paul'},
{PlayerId: 2, PlayerName: 'Blake Griffin'},
{PlayerId: 3, PlayerName: 'DeAndre Jordan'},
{PlayerId: 4, PlayerName: 'Jamal Crawford'},
{PlayerId: 5, PlayerName: 'Matt Barnes'}]
}
]
控制器:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Description;
using MyApp.Models;
namespace MyApp.Controllers
{
public class TeamsController : ApiController
{
private DataModel db = new DataModel();
// GET: api/teams
public IQueryable<TeamsWithPlayers> GetTeamsAndPlayers()
{
var query = from x in db.Teams
join y in db.Players on x.TeamId equals y.TeamId
select
{
// This is where I need some help...
}
}
}
}
TeamAndPlayer 类:
namespace MyApp.Models
{
public class TeamAndPlayers
{
public int TeamId { get; set; }
public string TeamName { get; set; }
public Players players { get; set; }
}
}
玩家类:
namespace MyApp.Models
{
public class Players
{
public int TeamId { get; set; }
public int PlayerId { get; set; }
public string PlayerName { get; set; }
}
}
有人可以提供一些见解吗?
【问题讨论】:
-
您的 JSON 结构与您的模型不匹配!在 JSON 中,您返回一个 TeamPlayers 数组,而您的 TeamAndPlayers 有一个 Player,但名为 Players。
标签: c# sql json asp.net-web-api