当前位置: 首页 > news >正文

工作中问题

本人是一个刚工作的后端工程师,这篇文章记录工作中遇到的问题

1、返回给前端的ID一样问题:

@JsonSerialize(using = ToStringSerializer.class)注解是Jackson库提供的一个功能,用于自定义序列化过程。具体来说,它用于将对象序列化为字符串格式,而不是默认的JSON格式

@JsonSerialize(using = ToStringSerializer.class)注解的主要作用是:

  • 将数字类型转换为字符串:当你希望将数字(如LongBigDecimal)以字符串形式输出时,可以使用这个注解。这可以防止在JSON序列化过程中出现精度丢失的问题,尤其是在处理大数字时。

 使用场景

  • 避免精度丢失:在Java中,Long类型在序列化为JSON时可能会被转换为数字,这在某些情况下可能导致精度丢失,尤其是在JavaScript中处理大数字时。使用ToStringSerializer可以确保这些数字以字符串形式输出,避免精度问题。
  • 与前端交互:在某些情况下,前端可能需要以字符串形式接收某些数据(例如ID),使用该注解可以确保数据格式的一致性。
 @JsonSerialize(using = ToStringSerializer.class)private Long id;

我这次就有一个Long类型的ID,由于没有使用@JsonSerialize注解,所以在返回给前端的时候,所有的ID都是一样的。在后端时,所有的ID数据正常,返回给前段时,所有的ID都一样,要加上@JsonSerialize注解才能正常返回。(Integer类型完全不用考虑这个问题。)

是否需要使用@JsonSerialize(using = ToStringSerializer.class)注解,取决于你的具体需求:

  1. 默认行为

    • 如果你不需要特别处理Long类型的值(例如,确保它在JSON中总是以字符串形式出现),那么可以直接返回,不需要添加任何注解。
  2. JavaScript中的精度问题

    • JavaScript中的Number类型有一个安全整数范围,大约是-2^53 + 12^53 - 1(即Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER)。超出这个范围的整数在JavaScript中可能会丢失精度。
    • 如果你的Long类型的值可能会超出JavaScript的安全整数范围,那么使用@JsonSerialize(using = ToStringSerializer.class)注解将它们序列化为字符串可以避免精度丢失的问题。
  3. 前端需求

    • 如果前端应用需要Long类型的值以字符串形式接收(例如,某些前端框架或库在处理大整数时可能需要字符串),那么你应该使用@JsonSerialize(using = ToStringSerializer.class)注解。
  4. 数据库ID

    • 如果Long类型的属性是数据库的主键ID,并且你确定这些ID不会超出JavaScript的安全整数范围,那么通常不需要序列化为字符串。

总结来说,如果你没有遇到JavaScript中的精度问题,或者前端没有特别要求以字符串形式接收Long类型的值,那么可以直接返回Long类型的属性,不需要添加@JsonSerialize(using = ToStringSerializer.class)注解。如果你有上述提到的任何需求,那么使用这个注解将Long类型序列化为字符串是一个好的做法。

2、maven的依赖传递问题

maven的依赖具有传递性,当你项目中依赖了A坐标,A坐标中可能依赖了B坐标。所以,当你刷新maven时,显示,找不到某一个坐标C,但是你的项目中,没有依赖坐标C,那么可能坐标C在你依赖的依赖里面,进行仔细的查找。


http://www.mrgr.cn/news/66263.html

相关文章:

  • 基于NVIDIA NIM平台实现盲人过马路的demo(一)
  • Android CCodec Codec2 (十九)C2LinearBlock
  • 笔尖与灵魂的对话:写作,习惯之花绽放
  • ORACLE 删除archivelog日志
  • PAT甲级-1133 Splitting A Linked List
  • Spring源码(十一):Spring MVC之DispatchServlet
  • 新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大
  • nacos本地虚拟机搭建切换wiff问题
  • 基于SpringBoot的免税商品优选购物商城的设计与实现
  • 小美和大富翁
  • 动态规划 —— dp问题-按摩师
  • Docker 的基本概念和优势
  • 气体传感器种类详解:从半导体到红外吸收型的全面解析
  • 仿真APP助力汽车零部件厂商打造核心竞争力
  • 解决从huggingface.co下载模型失败问题
  • EasyQBlog .NET 8 + Q-Blog 2.0博客模板 + easyweb iframe后台模板 开发的个人博客
  • 树莓派开发相关知识十 -小车服务器
  • Python打包脚本为EXE可执行文件
  • 信息安全工程师(77)常见网络安全应急事件场景与处理流程
  • 基于SSD模型的行人跌倒、摔倒检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • segformer模型实现pcb缺陷检测
  • DMRl-Former用于工业过程预测建模和关键样本分析的数据模式相关可解释Transformer网络
  • vos3000外呼系统如何检查落地网关配置正常,路由分析
  • 为什么学习Mybatis框架
  • Vue3安装、创建到使用
  • 2025郑州国际台球及配套设施展会,台球盛宴,产业新篇