我想为json定义一个自定义命名策略。我试图在spring-config.xml中配置不同的命名策略。我已将MappingJackson2HttpMessageConverter添加为带有自定义对象映射器的消息转换器:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="com.insta.hms.common.ObjectHttpMessageConverter" />
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
我正在尝试为JacksonMessageConvertor定义一个对象映射器:
<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "PropertyNamingStrategy" value = "PropertyNamingStrategy.LOWER_CASE" />
</bean>
这不起作用; Spring说:无法将'java.lang.String'类型的值转换为属性'PropertyNamingStrategy'所需类型'com.fasterxml.jackson.databind.PropertyNamingStrategy'
所以我的最终目标是将propertyNamingStrategy的'value'替换为实现propertyNamingStrategy的自定义类。
我需要帮助使用XML配置进行配置。
答案 0 :(得分:0)
当您指定属性value = "PropertyNamingStrategy.LOWER_CASE"
时,Spring会将其作为String进行评估。你需要的是:
<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "propertyNamingStrategy" value = "#{T(com.fasterxml.jackson.databind.PropertyNamingStrategy).LOWER_CASE}" />
</bean>
此外,根据此question的答案,以下内容也是可能的:
<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "propertyNamingStrategy" value = "LOWER_CASE" />
</bean>
答案 1 :(得分:0)
查看C.2.2.1 found here(属性staticField)下的第三个代码块。名称需要完全合格。