使用Jackson处理java.util.Optional的Spring Rest控制器
我有SpringRestController类来使用JSON处理rest服务。对于JSON,我使用的是Jackson。存在java.util.Optional类型的字段使用Jackson处理java.util.Optional的Spring Rest控制器,spring,rest,jackson,java-8,Spring,Rest,Jackson,Java 8,我有SpringRestController类来使用JSON处理rest服务。对于JSON,我使用的是Jackson。存在java.util.Optional类型的字段 private Optional<Long> start = Optional.empty(); 我正在使用的版本: 弹簧:4.1.5.释放 杰克逊:2.5.1 提前谢谢我能弄明白这一点。解决方案是注册对象映射器到消息转换器,如下所示 <bean id="objectMapper" class="org
private Optional<Long> start = Optional.empty();
我正在使用的版本:
弹簧:4.1.5.释放
杰克逊:2.5.1
提前谢谢我能弄明白这一点。解决方案是注册对象映射器到消息转换器,如下所示
<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="modulesToInstall" value="com.fasterxml.jackson.datatype.jdk8.Jdk8Module" />
</bean>
<mvc:annotation-driven>
<mvc:message-converters>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="modulesToInstall"
value="com.fasterxml.jackson.datatype.jdk8.Jdk8Module" />
</bean>
以上答案适用于Spring 4。 只需确保在xml配置中使用最新的xsd即可
在我的情况下,它以某种方式引用了“spring-mvc-3.0.xsd”,而这个版本还不知道“mvc:messageconverters”标记。将其更改为“spring mvc.xsd”解决了此问题。如果您使用的是最新版本的spring boot,则可以通过在pom文件中添加以下依赖项来实现这一点
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
然后使用上面Spring容器的映射器实例将对象转换为字符串
jacksonObjectMapper.writeValueAsString(user);
可选
不能用作字段。
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
@Autowired
private ObjectMapper jacksonObjectMapper;
jacksonObjectMapper.writeValueAsString(user);