@JsonFormat使用

对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”)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值