一、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即可实现。
代码如下:
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.SerializerProvider; /** * @description 自定义返回JSON 数据格中日期格式化处理 * @author aokunsang * @date 2013-5-28 */ public class CustomDateSerializer extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(value)); } }
使用方式:
@JsonSerialize(using = CustomDateSerializer.class) public Date getCreateDate() { return createDate; }
2、全局修改(强烈推荐):
MappingJacksonHttpMessageConverter主要通过ObjectMapper来实现返回json字符串。这里我们继承该类,注册一个JsonSerializer<T>。然后在配置文件中注入自定义的ObjectMapper。
代码如下:
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonSerializer; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializerProvider; import org.codehaus.jackson.map.ser.CustomSerializerFactory; /** * @description 解决Date类型返回json格式为自定义格式 * @author aokunsang * @date 2013-5-28 */ public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper(){ CustomSerializerFactory factory = new CustomSerializerFactory(); factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){ @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); jsonGenerator.writeString(sdf.format(value)); } }); this.setSerializerFactory(factory); } }
spring-servlet.xml中配置:
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="objectMapper" ref="customObjectMapper"></property> </bean> </mvc:message-converters> </mvc:annotation-driven> <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.rar
@RequestMapping(value="/timeObject",produces = "application/json;charset=UTF-8" ) @ResponseBody ----------------------------------------------------------------------------- <!-- @ResponseBody() ...
主要介绍了Springmvc 4.x利用@ResponseBody返回Json数据的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring MVC下彻底解决@ResponseBody转义html特殊字符问题,解决包括尖角号(),单引号('),双引号("),按位与(&),反斜杠(\)。
springMVC返回json数据需要的两个架包,加入springMVC使用@ResponseBody才不会报错。
2.请求头中正确设置了Content-Type参数及参数值,但是在项目jar依赖中(pom.xml或build.gradle)没有添加处理json字符串的处理类
NULL 博文链接:https://bijian1013.iteye.com/blog/2310240
springmvc-demo08-返回JSON数据.zip
主要介绍了SpringMVC中解决@ResponseBody注解返回中文乱码问题, 小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
springmvc关于@requestMapping和@requestParam的使用,详细代码,独立可用无需修改。
springmvc+国际化i18N+springmvc验证+jetbrick-template使用+@responsebody+谷歌guava: 1)围绕springmvc做的国际化 2)围绕springmvc做的验证 3)使用的jetbrick-template模板引擎 ……
NULL 博文链接:https://bijian1013.iteye.com/blog/2310236
本篇文章主要介绍了springmvc学习笔记-返回json的日期格式问题的解决方法,解决了日期格式的输出,有兴趣的可以了解一下。
springmvc框架整合AJAX使用@ResponseBody注解返回JSON数据格式需要用到的3个jar包
requestheader:Content-Type=application/json;charset=UTF-8 requestbody:{"id":3,"username":"王五","userpwd":"123456","birthdy":"2013-11-07 02-30-44"} sql文件如下: SET FOREIGN_KEY_CHECKS=0; DROP ...
SpringMVC通过@ResponseBody传送json字符串到客户端,实现了REST接口远程调用功能,demo中使用的版本为spring3.2,代码中用到了注解,代码直接部署运行,已经通过测试(如在浏览器中输入...客户端返回后台传递的json格式数据)
springmvc之@RequestMapping的简单demo
使用springmvc4框架整合AJAX使用@ResponseBody注解返回JSON数据格式需要用到的4个jar包,资源都是免费共享;
springmvc进行Jason数据封装转化时可以即使用也是@responsebody对数据进行封装的时候需要的工具类
本篇文章主要介绍了SpringMVC使用@Valid注解进行数据验证的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧