如何使用MappingJackson2HttpMessageConverter正确转换地图和列表?

时间:2015-11-03 14:29:31

标签: spring spring-mvc jackson

在我的Spring MVC项目MappingJackson2HttpMessageConverter中配置如下:

    <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jsonMessageConverter" />
        </list>
    </property>
</bean>

对于简单的Java POJO Beans,序列化效果很好。都好。但是,我也有包含需要序列化的Map的Beans,并且它失败了(JsonMappingException)。

Jackson instructions开始,我知道要解决这个问题,需要指出对象映射器的实际类型。它看起来像是:

Map<String, ResultValue> results = mapper.readValue(jsonSource,
                        new TypeReference<Map<String, ResultValue>>() { } );

如何对MappingJackson2HttpMessageConverter(基于Jackson2对象映射器)进行相同的配置?

1 个答案:

答案 0 :(得分:1)

从你的问题中不清楚什么不起作用,但我猜你有一个包含java.util.Mapjava.util.List属性的bean而你#&# 39;反序列化该bean时重新获得com.fasterxml.jackson.databind.JsonMappingException

在这种情况下,您可以在具有@JsonDeserialize注释的字段上提供提示。因此,例如,如果您有java.util.Map<String, ResultValue>字段,则可以将其注释为:

@JsonDeserialize(keyAs = String.class, contentAs = ResultValue.class)
public Map<String, ResultValue> map;