2

我有一个 POJO,我需要将其序列化为 JSON。POJO 有很多属性,我只想将其中的几个序列化为 JSON 表示。我正在使用杰克逊进行序列化。由于我想忽略很多属性,因此将它们中的每一个注释为@JsonIgnore 看起来非常难看

有没有办法告诉杰克逊或将 objectMapper 配置为仅在其注释为 @JsonProperty 时包含属性,并在不指定 @JsonIgnore 的情况下忽略其余部分。

4

3 回答 3

5

像这样设置您的对象映射器:

ObjectMapper mapper = new ObjectMapper();
mapper.setVisibilityChecker(mapper.getDeserializationConfig().getDefaultVisibilityChecker()
        .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
        .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
        .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
        .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
        .withSetterVisibility(JsonAutoDetect.Visibility.NONE));

归功于Horte :)

于 2013-09-02T21:23:40.560 回答
2

通过扩展 Enrichman 的答案,您还可以注释您的 POJO 类以达到相同的效果:

@JsonAutoDetect(
    creatorVisibility = JsonAutoDetect.Visibility.NONE, 
    fieldVisibility = JsonAutoDetect.Visibility.NONE,
    getterVisibility = JsonAutoDetect.Visibility.NONE,
    isGetterVisibility = JsonAutoDetect.Visibility.NONE,
    setterVisibility = JsonAutoDetect.Visibility.NONE
)
public class MyPojo {

    // fields, getters, setter, constructors, etc.

}

这将忽略 POJO 中JsonProperty默认未注释的所有内容。

于 2014-10-22T14:20:02.673 回答
0
@JsonAutoDetect(JsonMethod.NONE)

将忽略类中未注释的所有字段@JsonProperty

但它只适用于 org.codehaus.jackson 而不是 com.fasterxml.jackson

于 2017-08-06T10:15:33.613 回答