一、SpringMVC使用@ResponseBody时返回json的日期格式

前提了解: @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 这个开源的第三方类库。主要是以下两个jar包:jackson-core-asl-1.6.4.jar;jackson-mapper-asl-1.6.4.jar。

出现问题: 使用@ResponseBody时返回json字符串的日期格式。Date类型属性默认返回一个Long型的时间戳,怎样能够返回自定义的日期格式?

解决方案:目前有两种方式实现,

1、局部修改(网上较多,但不推荐);

继承Jackson的抽象类:JsonSerializer<T>,然后在javabean的属性getter()上添加注解@JsonSerialize即可实现。

代码如下:

  1. import java.io.IOException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import org.codehaus.jackson.JsonGenerator;
  5. import org.codehaus.jackson.JsonProcessingException;
  6. import org.codehaus.jackson.map.JsonSerializer;
  7. import org.codehaus.jackson.map.SerializerProvider;
  8. /**
  9. * @description 自定义返回JSON 数据格中日期格式化处理
  10. * @author aokunsang
  11. * @date 2013-5-28
  12. */
  13. public class CustomDateSerializer extends JsonSerializer<Date> {
  14. @Override
  15. public void serialize(Date value,
  16. JsonGenerator jsonGenerator,
  17. SerializerProvider provider)
  18. throws IOException, JsonProcessingException {
  19. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  20. jsonGenerator.writeString(sdf.format(value));
  21. }
  22. }

使用方式:

  1. @JsonSerialize(using = CustomDateSerializer.class)
  2. public Date getCreateDate() {
  3. return createDate;
  4. }

2、全局修改(强烈推荐):

MappingJacksonHttpMessageConverter主要通过ObjectMapper来实现返回json字符串。这里我们继承该类,注册一个JsonSerializer<T>。然后在配置文件中注入自定义的ObjectMapper。

代码如下:

  1. import java.io.IOException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import org.codehaus.jackson.JsonGenerator;
  5. import org.codehaus.jackson.JsonProcessingException;
  6. import org.codehaus.jackson.map.JsonSerializer;
  7. import org.codehaus.jackson.map.ObjectMapper;
  8. import org.codehaus.jackson.map.SerializerProvider;
  9. import org.codehaus.jackson.map.ser.CustomSerializerFactory;
  10. /**
  11. * @description 解决Date类型返回json格式为自定义格式
  12. * @author aokunsang
  13. * @date 2013-5-28
  14. */
  15. public class CustomObjectMapper extends ObjectMapper {
  16. public CustomObjectMapper(){
  17. CustomSerializerFactory factory = new CustomSerializerFactory();
  18. factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){
  19. @Override
  20. public void serialize(Date value,
  21. JsonGenerator jsonGenerator,
  22. SerializerProvider provider)
  23. throws IOException, JsonProcessingException {
  24. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  25. jsonGenerator.writeString(sdf.format(value));
  26. }
  27. });
  28. this.setSerializerFactory(factory);
  29. }
  30. }

spring-servlet.xml中配置:

  1. <mvc:annotation-driven>
  2. <mvc:message-converters>
  3. <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
  4. <property name="objectMapper" ref="customObjectMapper"></property>
  5. </bean>
  6. </mvc:message-converters>
  7. </mvc:annotation-driven>
  8. <bean id="customObjectMapper" class="com.pmc.dwa.common.custom.CustomObjectMapper"></bean>

二、@DatetimeFormat使用注意

1、 使用@DatetimeFormat很简单,这里需要注意的是:使用时要引入一个类库joda-time-1.3.jar,否则会无法访问相应路径(400错误)。

ps:该注解可以作用在METHOD,FIELD以及PARAMETER级别上。

使用介绍参考:http://www.captaindebug.com/2011/08/using-spring-3-datetimeformat.html#.UaR3mWWZk0k

2、因为springMVC没有提供默认的日期转换器,前段页面传递过来日期字符串怎么转换为日期类型,如果没有提供全局日期转换器或者数据绑定的基础上,可以使用@DatetimeFormat注解完成。

SpringMVC使用@ResponseBody时返回json的日期格式、@DatetimeFormat使用注意的更多相关文章

  1. [转]SpringMVC使用@ResponseBody时返回json的日期格式、@DatetimeFormat使用注意

    一.SpringMVC使用@ResponseBody时返回json的日期格式 前提了解: @ResponseBody 返回json字符串的核心类是org.springframework.http.co ...

  2. SpringMVC使用@ResponseBody时返回json的日期格式及可能产生的问题

    http://blog.csdn.net/z69183787/article/details/40375831 遇到的问题: 1 条件: 1.1.表单里有两个时间参数,都是作为隐藏项随表单一起提交: ...

  3. springmvc学习笔记--json--返回json的日期格式问题

    (一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annotation-driven 2.在依赖管理中添加ja ...

  4. spring Mvc json返回json的日期格式问题

    (一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annotation-driven 2.在依赖管理中添加ja ...

  5. 解决springmvc使用ResponseBody注解返回json中文乱码问题

    spring版本:4.2.5.RELEASE 查看“org.springframework.http.converter.StringHttpMessageConverter”源码,中有一段说明: B ...

  6. SpringMVC 利用@ResponseBody注解返回Json时,出现406 not acceptable 错误的解决方法。

    1 在RequestMapping中加入produces属性如: @RequestMap(value="/path",produces="application/json ...

  7. 【原】:关于使用springmvc的responseBody注解返回json的一些总结

    配置不正确可能会出现406错误 1:首先需要导入三个jar包: 2:需要在springmvc的配置文件文件中添加转换器并开启注解驱动: 3:controller:这里返回object也是可以的; 4: ...

  8. spingmvc 返回json数据日期格式化方法

    第一种: json 用的是这个依赖 <!-- JSON lib 开发包 以及它的依赖包 --> <dependency> <groupId>com.fasterxm ...

  9. SpringMVC 避免IE执行AJAX时,返回JSON出现下载文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- SpringMVC配置文件 --> <be ...

随机推荐

  1. Delphi out 参数 string Integer

    http://www.delphibasics.co.uk/RTL.asp?Name=Out http://stackoverflow.com/questions/14507310/whats-the ...

  2. Rhel6-keepalived+lvs配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.119 server19.example.com 192.168.12 ...

  3. 中南民航如何利用K2BPM构建业务流程?

    广州市中南民航空管通信网络科技有限公司成立于2004年9月,负责民航中南地区通信网络.电报网络的建设与维护.民航空管信息系统的开发与维护.公司拥有一支技术精湛的研发队伍,在信息技术领域领跑于民航空管行 ...

  4. 基于K2 BPM的航空业核心业务管理解决方案

    基于K2 BPM平台的航空业解决方案,专注航空公司运行类.营销类.管理类所有解决方案. 查看完整版,请访问K2官网http://www.k2software.cn/zh-hans/aviation-i ...

  5. Program C 暴力求解

    Description   A ring is composed of n (even number) circles as shown in diagram. Put natural numbers ...

  6. 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别

    本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...

  7. gsoap框架下的onvif程序流程分析

    SOAP_FMAC5 int SOAP_FMAC6 soap_serve(struct soap *soap) { do { unsigned int k = soap->max_keep_al ...

  8. 移动设备和SharePoint 2013 - 第3部分:推送通知

    博客地址:http://blog.csdn.net/foxdave 原文地址 在该系列文章中,作者展示了SharePoint 2013最显著的新功能概观--对移动设备的支持. 该系列文章: 移动设备和 ...

  9. hadoop启动之后出现错误:Retrying connect to server: hadoop/192.168.73.100:9000. Already tried 0 time(s);

    INFO ipc.Client: Retrying connect to server: hadoop/192.168.73.100:9000. Already tried 0 time(s); re ...

  10. Geetest 极验验证 验证图片拼图

    今天要求做一个跟魅族官网登陆的一个验证效果一样的界面 是一个拖动滑动图片进行拼图 那个效果看着很好,刚开始拿到不知道好不好做 从网上搜资料发现这是一种“极验验证码” 让用户通过滑动拼图来进行验证. 网 ...