我有一个POJO,我需要序列化为JSON。 POJO有很多属性,我想将其中的一些属性序列化为JSON表示。我正在使用杰克逊序列化。由于我想忽略很多属性,因此将每个属性注释为@JsonIgnore
看起来非常难看有没有办法告诉jackson或将objectMapper配置为仅在注释为@JsonProperty时包含属性,并忽略其余的而不指定@JsonIgnore。
答案 0 :(得分: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的信用:)
答案 1 :(得分: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
的所有内容。
答案 2 :(得分:0)
@JsonAutoDetect(JsonMethod.NONE)
将忽略未在@JsonProperty
但它仅适用于org.codehaus.jackson而不是com.fasterxml.jackson