前端接收后端时间数据类型不一致怎么办?

前端接收后端时间数据类型不一致怎么办?

前端时间数据处理难题及解决方案

本文探讨前端接收后端时间数据时遇到的类型转换问题。后端数据库(例如mysql)使用dateTIME或timestamp类型存储时间,但前端(例如使用typescript)接收到的数据却是字符串,导致无法直接进行日期时间计算(如提取年月日)。

问题根源在于:后端使用Java的Timestamp或类似类型,前端TypeScript接口(例如Icon接口中的createTime和updateTime属性定义为number)仅为类型声明,缺乏Java POJO类的反射能力,无法自动将json字符串转换为数字。即使接口定义为number,如果后端返回JSON数据中的createTime字段是字符串,TypeScript仍会将其解析为字符串,造成类型不匹配。

解决方案:

立即学习前端免费学习笔记(深入)”;

  1. 调整接口类型: 修改Icon接口,将createTime和updateTime属性类型改为String或number | string,以兼容后端返回的字符串类型。 之后,使用Date.parse()或其他JavaScript日期时间处理函数将字符串转换为时间戳(数字)进行后续操作。

  2. 后端数据格式化 理想情况下,后端应直接返回时间戳(数字)给前端。 如果后端使用Jackson库,可以使用@JsonFormat(shape = JsonFormat.Shape.NUMBER)注解将日期字段序列化为unix时间戳(数字)。 类似地,spring框架可以使用@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)注解控制日期时间格式。 这能避免前端繁琐的类型转换,提升代码效率和可读性。

通过以上方法,可以有效解决前端接收后端时间数据类型不一致的问题,确保前端能够正确处理时间数据。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享