如何为json响应添加和忽略字段

我正在使用RestEasy和hibernate在Jackson中返回响应。 我有一个bean播放器,其中包含字段:name,id,age,position。

现在,我正在实现两个GET rest方法来恢复json。

  1. getPlayer() ,它返回一个玩家:名字,身份,年龄,位置。

  2. getPlayers() ,返回一个玩家列表,但有了这个玩家列表,我不想返回位置。

我的意思是,我如何为一个响应添加一个字段而忽略它以获得另一个响应。

请建议。

谢谢

你不能简单地将位置字段归零吗?

 @GET @Path("/players") public List getPlayers(){ List players = getPlayersFromHibernate(); for(Player player : players) player.setPosition(null); return players; } 

您应该在POJO getter上使用@JsonIgnore注释。

http://jackson.codehaus.org/1.0.1/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html

更新:

您需要使用@JsonIgnoreProperties接口,并在Request映射@JsonIgnoreProperties其设置为@JSONFilter

您可以在此处阅读更多相关信息: http : //www.jroller.com/RickHigh/entry/filtering_json_feeds_from_spring

我正在使用tomee,忽略json响应transient一个字段为我工作,但我不知道它是否是正确的方法(我的应用程序没有jackson可见,我只包括jee-web api):

Servlet的

 import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/") @Produces({ MediaType.APPLICATION_JSON }) public class JsonApi { @GET @Path("testapi") public MyObject testApi() { return new MyObject("myname", "mycolor"); } } 

目的

 public class MyObject { public MyObject() { } public MyObject(String name, String color) { this.name = name; this.color = color; } public String name; public transient String color; } 

响应

 {"name":"myname"}