当前位置: 首页 > 图灵资讯 > 技术篇> 前后端时间数据类型不一致如何解决?

前后端时间数据类型不一致如何解决?

来源:图灵教育
时间:2025-03-20 17:12:50

前后端时间数据类型不一致如何解决?

前后端时间数据类型不匹配的解决方案

本文分析了前端和后端时间数据类型的不一致性,并提供了具体的解决方案。问题的根源是后端返回的时间数据类型与前端预期类型不一致,导致前端无法直接处理。

后端采用Javatimestamp类型和MySQLdatetime类型存储时间,前端typescript定义createtime和updatetime为number类型。然而,前端接收到的res.icons[0].createtime是字符串,而不是预期的时间戳数字。

问题是Typescript的interface只是类型定义,缺乏Java POJO类的反射能力不能自动将JSON字符串转换为数字。即使在Typescript中将createtime定义为number类型,如果createtime是后端返回的JSON数据中的字符串,前端接收到的数据仍然是字符串。因此,interface的定义必须与实际返回的JSON数据类型一致。 最佳实践是将前端icon接口中的createtime和updatetime类型修改为string或date类型,以匹配后端返回的数据。

为使后端返回时间戳,可使用Jackson库@Jsonformat注释或Spring@datetimeformat注释。

使用@JsonFormat注释:

Jsonformatt通过指定shape.Shape.NUMBER,时间数据可以序列为时间戳数字:

@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private Date date;

使用@Datetimeformat注释:

时间格式可以通过指定ISO属性来控制,返回时间戳的目的也可以实现:

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date date;

通过上述方法,后端可以将时间数据格式化为时间戳,解决前端时间数据类型不一致的问题。前端还需要根据后端实际返回的数据类型调整icon接口定义。

以上是如何解决前后端时间数据类型的不一致性?详情请关注图灵教育的其他相关文章!