我正在使用RestEasy和hibernate在Jackson中返回响应。 我有一个bean播放器,其中包含字段:name,id,age,position。
现在,我正在实现两个GET
休息方法来恢复json。
getPlayer()
,返回玩家:姓名,身份证,年龄,职位。
getPlayers()
,它返回一个玩家列表,但是有了这个玩家列表,我不想返回位置。
我的意思是,如何为一个响应添加一个字段而忽略它以进行另一个响应。
请建议。
由于
答案 0 :(得分:18)
您应该在POJO getter上使用@JsonIgnore
注释。
http://jackson.codehaus.org/1.0.1/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html
<强>更新强>
您需要使用@JsonIgnoreProperties
的界面并在请求映射上将其设置为@JSONFilter
。
您可以在此处详细了解: http://www.jroller.com/RickHigh/entry/filtering_json_feeds_from_spring
答案 1 :(得分:0)
我正在使用tomee,忽略json响应transient
中的字段对我有用,但我不知道它是否是正确的方法(我的应用程序没有杰克逊可见,我只是包括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"}
答案 2 :(得分:-8)
你不能简单地将位置字段归零吗?
@GET
@Path("/players")
public List<Player> getPlayers(){
List<Player> players = getPlayersFromHibernate();
for(Player player : players)
player.setPosition(null);
return players;
}