在我的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);
}
};
}
然而,现在我正在处理一个特例。我需要序列化一个不是我自己编写的类(一个类表单依赖库)。由于班级没有宣布吸气剂,杰克逊将忽略这些领域。 以下是外部类的外观:
public class DirectionsResult
{
public GeocodedWaypoint geocodedWaypoints[];
public DirectionsRoute routes[];
}
尽管使用@JsonAutoDetect
注释可以自定义类对Jackson的可见性,但这不适用于外部类。
那么如何在不使用@JsonAutoDetect注释的情况下设置类的可见性,以及不更改全局配置?
答案 0 :(得分:1)
您应该可以使用jacksons MixIn
功能。使用这种方法,您可以通过您选择的另一个类定义来控制类的所有配置。
https://github.com/FasterXML/jackson-docs/wiki/JacksonMixInAnnotations
您还可以查看我的一个github项目,看看该功能的使用情况: