make @jsonignore在isMethod上使用setter?

时间:2013-08-19 21:54:46

标签: json jackson fasterxml

这是我的班级

public class HouseJPAImpl implements House {

public RoomJPAImpl room;

public RoomJPAImpl getRoom(){
return this.room;
}

public void setRoom(RoomJPAImpl room){
this.room = room;
}

@Override
public boolean isRoom(){
return false;
}
}

我的代码与getRoom和isRoom混淆了。

引起:java.lang.IllegalArgumentException:属性“room”的冲突getter定义:com.shared.model.restimpl.jpa.HouseJPAImpl #getRoom(0 params)vs com.shared.model.restimpl.jpa.HouseJPAImpl #isRoom(0 params)

我尝试将@jsonignore放在isRoom方法上,但后来我没有在JSON中获取房间属性。

有没有办法在isRoom上使用getRoom?

1 个答案:

答案 0 :(得分:2)

首先,这是杰克逊2.3将优雅处理的事情(见https://github.com/FasterXML/jackson-databind/issues/238)。

但是在它发布之前,有两种主要方法可以解决这个问题:

  • @JsonIgnore上添加isRoom(),但@JsonProperty上保留getRoom()
  • 更改可见性设置以过滤掉所有isXxx()方法:可以设置全局设置(ObjectMapper类似于setVisibility),也可以在类上使用注释@JsonAutoDetect

如果这是一个孤立的案例,你可能最好只使用第一个。