2015-11-03 70 views
1

在配置爲我的春天MVC項目MappingJackson2HttpMessageConverter如下:如何使用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豆類,系列化運作良好。都好。但是,我也有豆類,包括Map s需要被序列化,並且它失敗(JsonMappingException)。

Jackson instructions,我知道解決這個問題需要的是指示對象映射器的實際類型。它看起來像:

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

如何可以在相同的配置來實現到MappingJackson2HttpMessageConverter(基於Jackson2對象映射器)?

回答

1

從你的問題中不清楚什麼是不起作用的,但我猜測你有一個包含java.util.Mapjava.util.List屬性的bean,並且在反序列化該bean時獲得com.fasterxml.jackson.databind.JsonMappingException

在這種情況下,您可以給@JsonDeserialize註釋提供提示。因此,舉例來說,如果您有一個java.util.Map<String, ResultValue>字段,您可以對其進行註釋:

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

謝謝。添加@JsonDeserialize作爲「提示」有所幫助。 – Stas