【问题标题】:make @jsonignore use a setter over a isMethod?让@jsonignore 在isMethod 上使用setter?
【发布时间】:2013-08-19 21:54:45
【问题描述】:

这是我的课

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:属性“房间”的 getter 定义冲突:com.shared.model.restimpl.jpa.HouseJPAImpl#getRoom(0 params) vs com.shared.model.restimpl.jpa.HouseJPAImpl #isRoom(0 参数)

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

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

【问题讨论】:

    标签: json jackson fasterxml


    【解决方案1】:

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

    但在它发布之前,有两种主要的处理方法:

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

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

    【讨论】:

    • 非常感谢。非常感激。它就像一个魅力
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多