在我的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对象映射器)进行相同的配置?
答案 0 :(得分:1)
从你的问题中不清楚什么不起作用,但我猜你有一个包含java.util.Map
或java.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;