从后台返回json格式的数据,timestamp 类型的数据,在前台显示为long类型的, 很是苦恼, 研究了很长时间,下面总结一下:
SpringMVC使用@ResponseBody时返回json的日期格式
前提了解: @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 这个开源的第三方类库。详见下一篇文章。
出现问题: 使用@ResponseBody时返回json字符串的日期格式。Date类型属性默认返回一个Long型的时间戳,怎样能够返回自定义的日期格式?
解决方案:目前有两种方式实现,
方法一:全局处理(这种方法我没试验过)
<mvc:annotation-driven>
<!-- 处理responseBody 里面日期类型 -->
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
方法二:引入jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-databind-2.5.0.jar 三个包
spring 的注解中自带格式转换
在实体类加上如下配置:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
public Date x_date; // 日期;
务必加上:timezone="GMT+8" , 东八区, 否则 会出现时间少一天的情况。
OK 已经解决, 返回的json 数据格式中,已经有了, 时间格式的字符串。