egh*_*ghe 2 java spring json jackson
我正在使用杰克逊 2.9.6。我有一个控制器,我试图在其中发送一个可选作为我的字段之一。当我收到控制器的响应时,我总是以这种格式得到它{"field":{"present":true}}(如这个问题所示)。
基本上我有一个 RestTemplate bean 配置如下:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我想添加 Jdk8Module 作为序列化过程的一部分。我注意到有一个MappingJackson2HttpMessageConverter(ObjectMapper mapper)接受 ObjectMapper 的构造函数,我正在考虑创建一个 ObjectMapper bean,它将向其注册 Jdk8Module (使用registerModule(Module module)在 ObjectMapper 类中找到的公共方法),以便我可以像这样传递该模块:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<constructor-arg name="objectMapper" ref="ObjectMapperWithJDK8Bean"></constructor-arg>
</bean>
</list>
</property>
</bean>
<bean id="ObjectMapperWithJDK8Bean" class="com.fasterxml.jackson.databind.ObjectMapper">
* Pass in com.fasterxml.jackson.datatype.jdk8.Jdk8Module here via the method *
</bean>
Run Code Online (Sandbox Code Playgroud)
但我当前面临的问题是registModule创建bean时如何从xml文件中调用方法?我正在使用 Spring 4.1。我是 Spring 新手,所以这非常具有挑战性!
您可以使用 java 配置而不是 xml 创建一个 bean,例如:
@Configuration
public class GeneralConfiguration {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper()
.registerModule(new ParameterNamesModule())
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
return mapper;
}
}
Run Code Online (Sandbox Code Playgroud)
我相信 @Configuration 和 @Bean 注释自spring 3.0以来都可用,因此您可以毫无问题地使用它们。如果您仍然希望继续使用基于 xml 的配置,那么:
<bean id="objectMapper"
class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="modulesToInstall"
value="
com.fasterxml.jackson.datatype.jdk8.Jdk8Module,
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule,
com.fasterxml.jackson.module.paramnames.ParameterNamesModule" />
</bean>
Run Code Online (Sandbox Code Playgroud)
阅读文档
| 归档时间: |
|
| 查看次数: |
7048 次 |
| 最近记录: |