在我的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);
}
};
}
但是,现在我正在处理一个特例。我需要序列化一个不是由我自己编写的类(类依赖库)。由于该类未声明吸气剂,因此Jackson将忽略这些字段。外部类如下所示:
public class DirectionsResult
{
public GeocodedWaypoint geocodedWaypoints[];
public DirectionsRoute routes[];
}
尽管使用@JsonAutoDetect
注释可以使Jackson的类的可见性客户化,但这不适用于外部类。那么,如何在不使用@JsonAutoDetect注释且不更改全局配置的情况下设置类的可见性?
您应该能够使用杰克逊MixIn
功能。使用这种方法,您可以通过选择的另一个类定义来控制一个类的所有配置。
https://github.com/FasterXML/jackson-docs/wiki/JacksonMixInAnnotations
您还可以签出我的github项目之一,以查看该功能的用法:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句