@JsonIgnore因公共getter而被忽略

时间:2014-06-04 16:28:55

标签: java json serialization jackson

你好我已经阅读了关于此的所有帖子,但似乎没有任何帮助

我有一个公共getter指向一个我不想序列化为Json的循环结构。我查看了其他帖子并尝试了建议但没有任何效果。

目前,我正在使用ObjectMapper @JsonIgnore和@JsonAutoDetect:

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
public class Bah {

    @JsonIgnore
    public String getFoo() { return foo; }

但是,getter仍然被序列化为我的Json结构。但是当我将getFoo重命名为没有get的东西时(例如foo())它可以工作,但是" public getX()"似乎覆盖了@JsonIgnore

我错过了什么?我确定它的东西是愚蠢的

由于 彼得

2 个答案:

答案 0 :(得分:1)

尝试在AUTO_DETECT_GETTERS中停用ObjectMapper。您可以在以下任何地方实例化ObjectMapper

ObjectMapper om = new ObjectMapper();
om.disable(MapperFeature.AUTO_DETECT_GETTERS);

或者,扩展ObjectMapper并在整个项目中使用自定义:

public class CustomObjectMapper extends ObjectMapper {
    public CustomObjectMapper() {
        disable(MapperFeature.AUTO_DETECT_GETTERS);
        // more project-wide config
    }
}

答案 1 :(得分:0)

好吧,我明白了,正如预测的那样真的很蠢!

原来我的项目中有com.codehaus.jackson和com.fasterxml.jackson。 ObjectMapper来自fastxml,注释来自codehaus>: - P

现在一切都按预期工作了。谢谢大家的帮助。 P