java - 排除 Jersey2 响应中的字段

标签 java json rest jersey jersey-2.0

我正在开发 Jersey2 RESTful 服务

Jersey2 v2.22.2 + Spring3 v3.2.16 + Jax-rs v2.0.1

@Path("/v1/games")
public class GameServiceV1 implements IGameServiceV1 {

    @Autowired
    GameDAO gameDao;

    @Autowired
    CompanyDAO companyDao;

    @Autowired
    DMapper mapper;

    @Override
    @GET
    @Produces({ MediaType.APPLICATION_JSON })
    public List<GameDTO> getGamesByCity(@QueryParam("city") String cityID, @QueryParam("template") String template)
            throws EscapeitorException {

        List<Company> companies = companyDao.getCompaniesByCityId(cityID);
        List<GameDTO> games = putCompaniesWithinGames(companies);
        return games;
    }

如果我收到 @QueryParam template = "summary",我需要排除一些 GameDTO 响应字段。

例如:

必须返回 GET/rest/v1/games?city=1:

[  
  {  
     "id":"1",
     "name":"Zombie Lab",
     "company":"2",
     "description":"Laboratorio zombie des",
     "story":"historia",
     "players":"2-5",
     "length":60,
     "mode":"Team",
     "price":15.0,
     "web":"http://zombielab.com/",
     "image":null,
  }]

但是,

GET/rest/v1/games?city=1?template=summary 必须返回:

[  
  {  
     "id":"1",
     "name":"Zombie Lab",
     "description":"Laboratorio zombie des",
     "web":"http://zombielab.com/",
  }]

如何排除字段?

最佳答案

您可能想看看 projections在 Spring Data REST 中。基本上,这允许您定义 DAO/DTO 字段的子集(投影)。

关于java - 排除 Jersey2 响应中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371774/

相关文章:

java - 如何知道点击操作或拖动操作后触发释放监听器?

python - 使用 pymongo 将 JSON 导入 mongoDB

rest - 解析 Web API 路由中的自定义格式 DateTime 值

rest - 如何在 Insomnia 上禁用主机名验证

java - Android ListItem 不工作

java - 使用 JAVA 从 HTML 中提取所有图像

c# - 从结构化数据构建 JSON 层次结构

c# - Odata DataContext 仅更新修改的属性

java - 在 Android 上动画约束布局更改的最佳方式

java - 在Python中解码java对象