2013-07-19 22 views
2

我使用Spring MVC 3和MappingJacksonHttpMessageConverter來獲取帶有@ResponseBody的json數據。默認配置工作正常,但現在我需要將camelCase字段轉換爲Pascal外殼。爲此,我已經開發了一個自定義的命名策略:Spring 3中的自定義ObjectMapper和NamingStrategy MVC

UpperCaseNamingStrategy.java

public class UpperCaseNamingStrategy extends PropertyNamingStrategy { 

    @Override 
    public String nameForField(MapperConfig config, AnnotatedField field, String defaultName){ 
     return convert(defaultName); 
    } 

    @Override 
    public String nameForGetterMethod(MapperConfig config, AnnotatedMethod method, String defaultName){ 
     return convert(defaultName); 
    } 

    @Override 
    public String nameForSetterMethod(MapperConfig config, AnnotatedMethod method, String defaultName){ 
     return convert(defaultName); 
    } 

    public String convert(String defaultName){ 
     char[] arr= defaultName.toCharArray(); 
     if(arr.length != 0){ 
      if(Character.isLowerCase(arr[0])){ 
       arr[0] = Character.toUpperCase(arr[0]); 
      } 
     } 
     return new StringBuilder().append(arr).toString(); 
    } 
} 

我我的自定義策略設置爲objectMapper和我設置objectMapper的轉換器。這些都是豆:

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
    <property name="objectMapper" ref="jacksonObjectMapper" /> 
</bean> 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
     <ref bean="jacksonMessageConverter"/> 
     </list> 
    </property> 
</bean> 

<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper"> 
    <property name="propertyNamingStrategy" ref="namingStrategy"/> 
</bean> 

<bean id="namingStrategy" class="es.unican.meteo.util.UpperCaseNamingStrategy"></bean> 

將豆正確註冊,因爲我可以看到它在日誌中,但是當我請求JSON數據的行爲是相同的,該轉換器的方法不被調用。我需要更多配置嗎?

回答

0

以下更改建議相比,我在我的項目照:

  1. 變化映射bean類「com.fasterxml.jackson.databind.ObjectMapper」。我使用Spring 4.3
  2. 添加@JsonProperty註釋的正在serielized類的屬性/ deseralized
  3. 創建類默認構造正在被serielized/deseralized

好運!

相關問題