我一直在学习关于Spring boot的教程,在那里我学会了如何阻止jackson将日期转换为时间戳。如:
{"birthDate":1505736233603} //before
{"birthDate":"2017-09-18T12:04:27.345+0000"}//after
通过写作
spring.jackson.serialization.write-dates-as-timestamps=false
正在应用中。属性。
我如何为SpringMVC做同样的事情,当然在SpringMVC中没有application.properties
另一种方法是在框架填充/配置消息转换器之后配置它们:
@EnableWebMvc
@Configuration
public class AppConfiguration implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof AbstractJackson2HttpMessageConverter) {
AbstractJackson2HttpMessageConverter jacksonconverter = (AbstractJackson2HttpMessageConverter) converter;
jacksonconverter.getObjectMapper()
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
}
}
}
}
此外,此代码也应该适用于SMILE
,因为MappingJackson2SmileHttpMessageConverter
扩展了AbstractJackson2HttpMessageConverter
。
如果您有权访问ObjectMapper,还可以通过编程将其设置为属性
ObjectMapper mapper = new ObjectMapper();
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.setDateFormat(new ISO8601DateFormat());
您必须配置负责创建服务返回的JSON的Spring Bean。
首先,您需要定义转换器将用于创建JSON的Jackson对象映射器Bean:
<bean class="com.fasterxml.jackson.databind.ObjectMapper" id="objectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg value="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"/>
</bean>
</property>
</bean>
(请注意,您可以定义所需的日期格式)。
然后,需要将这个objectMapper bean注入JSON消息转换器:
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
如您所见,我使用的是“mvc”命名空间(“http://www.springframework.org/schema/mvc)来定义MVC bean。
如果您使用的是注释而不是XML配置,您可以通过定义下一个Configuration类(或使其适应您的代码:)来做同样的事情
@EnableWebMvc
@Configuration
@ComponentScan({ "com.yourorg.app" })
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
messageConverters.add(new createJsonHttpMessageConverter());
super.configureMessageConverters(converters);
}
private HttpMessageConverter<Object> createJsonHttpMessageConverter() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
MappingJackson2HttpMessageConverter jsonConverter =
new MappingJackson2HttpMessageConverter();
jsonConverter.setObjectMapper(objectMapper);
return jsonConverter;
}
}
希望这有帮助:)
问题内容: 论坛成员 我在Java中遇到日期时间问题。实际上,我正在接收 格式为2012-02-27T01:10:10 的开始日期,并且我想将接收到的日期插入具有datetime数据类型的数据库中。 实际上,我尝试通过以下代码将收到的开始日期转换为日期时间 但是使用上面的代码,只有 日期被添加到我的数据库中,例如2012-02-27 00:00:00 我也想将时间添加到数据库中,但是当我将Simp
问题内容: 如何在MySQL中转换为? 问题答案: 在MySQL中使用功能 请记住,如果使用的框架以毫秒为单位进行存储(例如Java的时间戳),则 必须除以1000 ,以秒为单位获取正确的Unix时间。
我需要使用php将日期时间插入到oracle表中。 我的日期字符串是这种格式: 当我在php中使用这种格式时, $date1=to_date('2013-10-22 08:02:30','YYYY-MM-DD HH24: MI: SS') 我看到oracle表中的数据是PM格式的。这怎么可能?我如何更改to\u日期,以便任何时间12都是上午,任何时间12点及以上都是下午?
问题内容: 我在来自Linux服务器的json中有一个时间戳。我想使用Java将其转换为简单的日期时间格式。 我需要以下格式的日期和时间:dd-mm-yyyy hh:mm:ss 这是我的JSON数据: 问题答案: 批处理日期 看起来像是从时代开始的几秒钟, 所以 然后使用SimpleDateFormat应该可以解决问题 -代码- -输出-
问题内容: 是否有一个内置的转换方法为在Python,例如获得在指定日期的午夜?相反的转换很容易:有一个方法。 我真的必须手动打电话吗? 问题答案: 您可以使用;现在,您创建一个初始化为午夜的对象。
问题内容: 我想将日期转换为时间戳,我的输入是。我用了 上面写着NaN ..有人能告诉你如何转换吗? 问题答案: var myDate = “26-02-2012”; myDate = myDate.split(“-“); var newDate = myDate[1]+”,”+myDate[0]+”,”+myDate[2]; console.log(new Date(newDate).getTi