@JsonFormat使用

来源:互联网 发布:360里有个网络监控 编辑:程序博客网 时间:2024/06/07 02:44

对ajax返回的数据中的日期进行格式化,推荐在实体上加上@jsonformat这个注解,这个注解是jackson的保中的;
还要指明我们是东八时区

@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" , timezone = " GMT+8 " )

2016/5/26 更新
@JsonFormat只对单独返回实体起作用!!(如果不加@JsonFormat,Date类型的字段会返回long型)

@ResponseBody@RequestMapping(value = "/detail", method = RequestMethod.GET)public Exam getExamById(String id) {//我在Exam的Date类型的字段上加了@JsonFormat注解,前台返回的就是@JsonFormat中规定的日期格式        Exam result = examService.getExamById(id);        return result;    }

没加 @JsonFormat的情况
这里写图片描述

我们可以看到endTime和startTime变成了long类型!

但是!!这时候如果我们用JSONObject包装一下,@JsonFormat就会。。。失效了!!!!

@RequestMapping(value =  "/detail", method =  RequestMethod.GET)public  String getExamById(String id)  {Exam result = examService.getExamById(id);JSONObject obj =  new  JSONObject(result);return jsonObject.toString();}

这时候前台得到的Date类型字段,被JSONObject内部转了一下,成了形如这样的格式:yyyy-MM-dd HH:mm:ss.S(2016-5-26 15.44.36.0)

那么前台怎么样在被 JSONObject包装了得前提下,得到我们想要的格式了?
解决办法:
直接覆盖对应属性

SimpleDateFormat format =  new  SimpleDateFormat("yyyy/MM/dd HH:mm");obj.put("startTime", format.format(result.getStartTime()));obj.put("endTime", format.format(result.getEndTime()));

NOTE:SpringMVC只能把这样的日期参数映射成Date类型!
(yyyy/MM/dd HH:mm:ss)
如果是别的pattern,请在实体对应的字段上加上 @DateTimeFormat(pattern=” yyyy -MM- dd HH:mm”)

0 0
原创粉丝点击