spring boot1.x升级到2.x问题——timestamp序列化问题

spring boot 1.x的时候,被@ResponseBody修饰的返回值中如果存在java.util.Date类型,则会默认被序列化为timestamp的形式,如:

@RestController
public class TestController {

    @GetMapping("/test")
    public Object test(){
        return new Date();
    }
}

返回为:

clipboard.png

当升级为spring boot 2.0.2的时候,在代码不变的情况下,返回值为:

clipboard.png

通过调试,发现原因在于spring boot 2.0.2中的org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration类中多了如下代码:

static {
    Map<Object, Boolean> featureDefaults = new HashMap<>();
    featureDefaults.put(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    FEATURE_DEFAULTS = Collections.unmodifiableMap(featureDefaults);
}

即,在不加配置的情况下,spring boot 2.0.2版本中,返回值中的java.util.Date类型不再默认序列化为timestamp

如果需要仍然按照之前的方式序列化,需要在application.yml中增加如下配置:

spring:
  jackson:
    serialization: 
      WRITE_DATES_AS_TIMESTAMPS: true

可能是因为没有仔细看文档导致出现了这个问题,记录下来供遇到同样问题的小伙伴们参考。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值