使@jsonignore在isMethod上使用setter



这是我的类

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.House JPAImpl#isRoom(0params)

我试着把@jsonignore放在isRoom方法上,但后来我没有得到JSON中的room属性。

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

首先,这是Jackson 2.3将优雅地处理的问题(请参阅https://github.com/FasterXML/jackson-databind/issues/238)。

但在它发布之前,有两种主要的方法来处理这个问题:

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

若这是一个孤立的案例,那个么只使用第一个可能会更好。

相关内容

  • 没有找到相关文章

最新更新