【发布时间】:2017-01-11 18:49:40
【问题描述】:
在我的 spring-boot 应用程序中,我在 Jackson 的 ObjectMapper 上有一个全局配置,它告诉 Jackson 不要按字段序列化对象,而是按 getter:
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder()
{
return new Jackson2ObjectMapperBuilder()
{
@Override
public void configure(ObjectMapper objectMapper)
{
super.configure(objectMapper);
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.GETTER, Visibility.PUBLIC_ONLY);
objectMapper.setVisibility(PropertyAccessor.IS_GETTER, Visibility.PUBLIC_ONLY);
}
};
}
但是,现在我正在处理一个特殊情况。我需要序列化一个不是我自己编写的类(类形式的依赖库)。由于该类没有声明 getter,Jackson 将忽略这些字段。 下面是外部类的样子:
public class DirectionsResult
{
public GeocodedWaypoint geocodedWaypoints[];
public DirectionsRoute routes[];
}
虽然使用@JsonAutoDetect 注释可以定制类对Jackson 的可见性,但这不适用于外部类。
那么如何在不使用 @JsonAutoDetect 注释并且不更改全局配置的情况下设置类的可见性?
【问题讨论】:
标签: java json spring spring-boot jackson