前后端时间数据类型不一致的解决方案
在前端开发中,后端返回的时间数据往往与前端类型不一致,导致时间数据无法直接处理。本文针对 TypeScript 前端接收 Java 后端 Timestamp 时间数据的类型,最终得到字符串的问题,提供详细的解决方案。
问题:
核心问题是前后端时间数据类型不匹配。 Java 应用使用 DATETIME 数据库字段和 Timestamp 物理类型的存储时间,前端 TypeScript 将 createTime 和 updateTime 定义为 number 类型(时间戳)。然而,实际接收到的前端 createTime 但是字符串,不能直接进行时间处理。本文还讨论了如何让后端直接返回时间戳。
立即学习“Java免费学习笔记(深入);
分析及解决方案:
TypeScript 的 interface 只定义类型,不强制转换数据类型 Java 的 POJO 类不同。 interface 无法自动将 JSON 字符串转换为数字。即使定义 createTime 为 number,后端返回字符串,TypeScript 字符串仍然被接收。因此,interface 定义需要实际 JSON 一致的数据类型。 将 Icon 接口中的 createTime 和 updateTime 修改为 string 或 number | string 类型可以解决不匹配类型的编译错误。
可用于解决后端返回的时间数据类型问题 Java 的 JSON 处理库(例如 Jackson)注释控制时间数据的序列格式。@JsonFormat(shape = JsonFormat.Shape.NUMBER) 注解可以将 Timestamp 类型数据序列化为数值时间戳。
另一种方法是使用 Spring 的 @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) 注释,指定日期时间的格式。
确保后端返回的时间数据格式与前端预期格式一致,避免前端处理错误。
以上是Typescript前端如何处理Java后台Timestamp类型时间数据造成的字符串问题。详情请关注图灵教育的其他相关文章!
