Java 使用jackson时忽略属性和访问器
我有一个POJO,需要序列化为JSON。POJO有很多属性,我只想将其中的一小部分序列化到JSON表示中。我正在使用jackson进行序列化。因为有很多属性我想忽略,所以将它们注释为@JsonIgnore看起来很难看Java 使用jackson时忽略属性和访问器,java,json,rest,jackson,jax-rs,Java,Json,Rest,Jackson,Jax Rs,我有一个POJO,需要序列化为JSON。POJO有很多属性,我只想将其中的一小部分序列化到JSON表示中。我正在使用jackson进行序列化。因为有很多属性我想忽略,所以将它们注释为@JsonIgnore看起来很难看 有没有办法告诉jackson或将objectMapper配置为仅在其注释为@JsonProperty时包含属性,而忽略其余部分而不指定@JsonIgnore 如下设置对象映射器: ObjectMapper mapper = new ObjectMapper(); mapper.se
有没有办法告诉jackson或将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));
归功于:)通过扩展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