解决spring boot接收前端传递过来的json数据时,接收到的时间与实际传递时间不一致的问题

spring boot接收前端传递过来的时间,总是比实际时间晚几个小时或者早几个小时,这是由于使用在@RequestBody 实体类,进行接收json类型字符串的时候,会把接受的string时间字段转换成lang类型,然后对应实体类的时候,会按照GMT+0时区的时间进行处理。

解决办法:
1,使用@JsonFormat注解,并且指定时区

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

2,使用@DateTimeFormat注解,但此方法在pattern="yyyy-MM-dd HH:mm:ss"时不适用Jackson,只支持时间类型为pattern="yyyy-MM-dd"的。

@DateTimeFormat(pattern="yyyy-MM-dd")
private Date timingDate;

3,Controller接收时,按照json字符串接收,然后代码对应到bean里时,特殊处理时间字段。

需要使用到net.sf.json。

import net.sf.json.JSONObject;

import net.sf.json.util.JSONUtils;

@RequestMapping("/insideByJson.tml")
public @ResponseBody Map<String, Object> insideByJson(@RequestBody String jsonParam) {
	//json字符串转换成bean
	JSONObject json=JSONObject.fromObject(jsonParam);
	String[] dateFormats = new String[]{"yyyy-MM-dd HH:mm:ss","yyyy-MM-dd"};  
        JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
        Inside inside=(Inside) JSONObject.toBean(json, Inside.class);
}



  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值