登录
首页 >  文章 >  java教程

前后端日期参数序列化不一致导致接口调用报错:如何解决?

时间:2024-12-17 09:12:49 448浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《前后端日期参数序列化不一致导致接口调用报错:如何解决?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

前后端日期参数序列化不一致导致接口调用报错:如何解决?

日期作为参数与接口参数实体类的序列化不一致

问题描述

前端传参到后端服务一接口,服务一调用第二服务接口时,服务二接口接收日期参数序列化的时候报错了,具体报错内容如下:

org.springframework.http.converter.httpmessagenotreadableexception: json parse error: invalid value for year (valid values -999999999 - 999999999): 4665973755; nested exception is com.fasterxml.jackson.databind.jsonmappingexception: invalid value for year (valid values -999999999 - 999999999): 4665973755 (through reference chain: com.xxx.xxxdto["replacedate"])

原因分析

服务一和服务二接口使用的实体类字段都使用了 @jsonserialize 和 @jsondeserialize 注解,用来指定日期字段的序列化和反序列化方式。但是,两个接口中使用的注解规范不一致。

客户端:使用了 jsr-310 规范的 @jsondeserialize(using = localdatedeserializer.class) 注解

@jsondeserialize(using = localdatedeserializer.class)
private localdate replacedate;

服务一:使用了 jsr-310 规范的 @jsonserialize(using = localdateserializer.class) 和 @jsondeserialize(using = localdatedeserializer.class) 注解

@jsonserialize(using = localdateserializer.class)
@jsondeserialize(using = localdatedeserializer.class)
private localdate replacedate;

服务二:使用了 hutool 工具包的序列化注解

@jsonfield(serializeusing = dateserializer.class)
private localdate replacedate;

解决方法

确保客户端、服务一和服务二的日期字段序列化和反序列化注解规范一致。建议使用 jsr-310 规范的注解:

@jsonserialize(using = localdateserializer.class)
@jsondeserialize(using = localdatedeserializer.class)
private localdate replacedate;

今天关于《前后端日期参数序列化不一致导致接口调用报错:如何解决?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>