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

工作中问题

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

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.kler.cn/a/382119.html

相关文章:

  • 【杂谈】-为什么Python是AI的首选语言
  • 利用.NET Upgrade Assitant对项目进行升级
  • kotlin中泛型中in和out的区别
  • 【pycharm】远程服务器之后如何打开终端
  • C++中的模板元编程
  • 电脑使用CDR时弹出错误“计算机丢失mfc140u.dll”是什么原因?“计算机丢失mfc140u.dll”要怎么解决?
  • SQL,力扣题目1767,寻找没有被执行的任务对【递归】
  • 【点云学习笔记】——分割任务学习
  • 常见的排序算法(二)
  • 微信小程序的汽车维修预约管理系统
  • 【xml转JSON】
  • nginx 搭建网站
  • Django Admin
  • Redis 中 Bitmap 原理和应用
  • LeetCode 2487.从链表中移除节点
  • C++ | Leetcode C++题解之第523题连续的子数组和
  • pytorch学习:矩阵分解:奇异值分解(SVD分解)
  • DevOps-课堂笔记
  • 服了!这波大选,赚最肥的居然是搞AI写作的
  • 深入浅出:解读注意力机制,让神经网络更“聪明”
  • ubuntu 安装go和vscode
  • 二次封装 el-pagination 组件存在的问题
  • Mac使用记事
  • JAVA基础:多重循环、方法、递归 (习题笔记)
  • 看到你还在用Maven,Gradle难道不香吗?
  • 霍尼韦尔测厚仪51000372怎么工作