小编Ben*_*999的帖子

Spring MVC + Jackson:动态Json序列化

我正在使用 Spring MVC 3.0.5 和 Jackson 1.7.2。

我希望实现一个动态 Bean 序列化器分配机制,例如,假设我的 MVC 控制器返回 ( @ResponseBody) 一个 MyObject 类型的对象。默认情况下,Jackson 的 SerializerFactory 将寻找最合适的序列化器,包括我的自定义序列化器(例如CustomSerializer extends JsonSerializer<MyObject>)。

但是,我希望触发我的自定义序列化器,以防某些标志处于活动状态(比方说,附加到 ThreadLocal 的布尔变量)。否则,我想使用 Jackson 提供的序列化程序,保持MappingJacksonHttpMessageConverter的默认行为不变。

有什么方法可以实现这一点吗?

我已经将自己的 ObjectMapper、SerializerFactory 和 CustomSerializers 注册到 Spring 的<mvc:annotaion-driven />默认MappingJacksonHttpMessageConverter.

public class ConvertingPostProcessor implements BeanPostProcessor {

    private ObjectMapper jacksonJsonObjectMapper;

    public Object postProcessBeforeInitialization(Object bean, String name)
            throws BeansException {
        if (bean instanceof AnnotationMethodHandlerAdapter) {
            HttpMessageConverter<?>[] convs = ((AnnotationMethodHandlerAdapter) bean).getMessageConverters();
            for (HttpMessageConverter<?> conv: convs) {
                if (conv …
Run Code Online (Sandbox Code Playgroud)

serialization dynamic spring-mvc jackson

5
推荐指数
1
解决办法
4816
查看次数

标签 统计

dynamic ×1

jackson ×1

serialization ×1

spring-mvc ×1