我有一个 POJO,我需要将其序列化为 JSON。POJO 有很多属性,我只想将其中的几个序列化为 JSON 表示。我正在使用杰克逊进行序列化。由于我想忽略很多属性,因此将它们中的每一个注释为@JsonIgnore 看起来非常难看
有没有办法告诉杰克逊或将 objectMapper 配置为仅在其注释为 @JsonProperty 时包含属性,并在不指定 @JsonIgnore 的情况下忽略其余部分。
像这样设置您的对象映射器:
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 :)
通过扩展 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
默认未注释的所有内容。
@JsonAutoDetect(JsonMethod.NONE)
将忽略类中未注释的所有字段@JsonProperty
但它只适用于 org.codehaus.jackson 而不是 com.fasterxml.jackson