spingmvc 返回json数据日期格式化方法
第一种:
json 用的是这个依赖
<!-- JSON lib 开发包 以及它的依赖包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.0</version>
</dependency>
在springmvc返回json数据的时候默认日期字段显示的是long类型的时间戳
如果想要返回格式化的日期如:yyyy-MM-dd这种格式的需要进行出现
方法如下:
单独写一个处理类继承JsonSerializer
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;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注解
|
1
2
|
@JsonSerialize(using = CustomDateSerializer.class) private Date createTime; |
第二种:
这个包支持情况下
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
一、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注解完成。
spingmvc 返回json数据日期格式化方法的更多相关文章
- JMeter中返回Json数据的处理方法
Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...
- 【jmeter】JMeter中返回Json数据的处理方法
Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...
- JMeter中返回Json数据的处理方法(转)
Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...
- jmeter(二十)JMeter中返回Json数据的处理方法
Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...
- 自动生成返回Json数据的toString()方法
平时书写实体类方法的时候,想要获取的值直接返回Json字符串,以便使用,可以直接在Eclipse里面生成. 实现步骤: 1.快捷键Alt+S 2.选择Edit 3.添加字段,名称随意(我的为JsonS ...
- asp.net webservice 返回json数据乱码解决方法
[WebMethod] public void QueryRiskNotice(string phone) { try { var data = _riskNoticeDal.QueryRiskNot ...
- java返回json数据日期为一串数字字符串 js 转义
var time = "2514484555"; //这只是事例,并不是实际的数据 function timeToString(time) { var datetime = new ...
- SpringMVC返回JSON数据时日期格式化问题
https://dannywei.iteye.com/blog/2022929 SpringMVC返回JSON数据时日期格式化问题 博客分类: Spring 在运用SpringMVC框架开发时,可 ...
- Flask 框架 重定向,捕获异常,钩子方法及使用jsonify在网页返回json数据
Flask 框架中常用到重定向方法来实现路由的跳转 ,路由跳转又分为站内跳转和站外跳转 常用的站内跳转方法为url_for 而常用的站外跳转为redirect 在这里提示一下: 在使用两种方法是须调 ...
随机推荐
- $geoNear
怎么使用mongoose的geoNear 2014-11-26 15:05:20| 分类: mongodb | 标签:mongoose |举报|字号 订阅 下载LOFTER我的照片书 ...
- Android Phonebook编写联系人UI加载及联系人保存流程(六)
2014-01-07 11:18:08 将百度空间里的东西移过来. 1. Save contact 我们前面已经写了四篇文章,做了大量的铺垫,总算到了这一步,见证奇迹的时刻终于到了. 用户添加了所有需 ...
- IT公司100题-4-在二元树中找出和为某一值的所有路径
问题描述: 输入一个整数和一棵二元树.从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径.打印出和与输入整数相等的所有路径. 例如输入整数30和如下二元树 14 / \ 5 16 / ...
- URAL 1519 基础插头DP
题目大意: 给定一个图,一部分点'*'作为障碍物,求经过所有非障碍点的汉密尔顿回路有多少条 基础的插头DP题目,对于陈丹琦的论文来说我觉得http://blog.sina.com.cn/s/blog_ ...
- 【转】./configure && make && make install详解
在Linux中利用源码包安装软件最重要的就是要仔细阅读安装包当中的README INSTALL两个说明文件,这两个文件会清楚的告诉你如何可以正确的完成这个软件的安装! 我们都知道源 ...
- Cygwin下载,安装教程
Cygwin是一个用于在Windows上模拟Linux环境的软件,由于工作上的需要,我要使用它,至于为什么用它,我在这里不做过多的解释,本文的目的,旨在于解决Cygwin安装上的问题. 原始的安装Cy ...
- 网络安全之PHP安全编程建议
要提供互联网服务,当你在开发代码的时候必须时刻保持安全意识.可能大部分 PHP 脚本都对安全问题都不在意,这很大程度上是因为有大量的 无经验程序员 在使用这门语言.但是,没有理由让你因为对你的代码的不 ...
- 计算系数(noip2011)
[问题描述]给定一个多项式(ax + by)^k,请求出多项式展开后(x^n)*(y^m)项的系数.[输入]输入文件名为 factor.in.共一行,包含 5 个整数,分别为a,b,k,n,m,每两个 ...
- mysql 创建存储过程注意
最近在利用navicat创建存储过程时,总是报1064语法错误,而且每次都是指向第一行,百思不得姐,如下图: 后来发现,原来是输入参数没有定义长度导致,所以以后真要注意 加上入参长度即可:IN `sT ...
- linux下的文件权限管理
权限管理有两个层面 第一层区分用户:文件属主(u), 组用户(g), 其它(o) 第二层区分权限:读(r),写(w),可执行(x) 这两个层次构成文件权限管理的二维结构 u g ...