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

后端id设置long类型时,传到前端,超过19位最后两位为00

文章目录

  • 后端id设置long类型时,传到前端,超过19位最后两位为00
    • 一、引言
    • 二、问题概述
      • 1、问题背景
      • 2、问题示例
    • 三、解决方案
      • 1、将ID转换为字符串
        • 1.1、使用@JsonSerialize注解
      • 2、前端处理
    • 四、总结

后端id设置long类型时,传到前端,超过19位最后两位为00

一、引言

在后端开发中,我们经常会遇到需要将ID作为标识符传递给前端的情况。当ID的类型为long时,如果该ID超过19位,前端JavaScript在处理时可能会遇到精度问题,导致最后两位变成00。本文将探讨这一问题的原因以及解决方案。

二、问题概述

1、问题背景

在Java中,Long类型的取值范围是-92233720368547758089223372036854775807(即-2^642^64-1)。然而,JavaScript中的Number类型取值范围是-90071992547409929007199254740991(即-2^532^53-1)。当long类型的ID超过JavaScript的Number类型范围时,就会出现精度丢失的问题。

2、问题示例

在这里插入图片描述

在这里插入图片描述

假设后端生成了一个超过19位的ID,如1639542977692344321,当这个ID传递到前端时,JavaScript可能会将其错误地解析为1639542977692344300,即最后两位变成了00。

三、解决方案

1、将ID转换为字符串

为了避免精度丢失,我们可以在后端将long类型的ID转换为字符串。这样,无论ID的长度如何,前端都可以正确地接收和处理。

1.1、使用@JsonSerialize注解

在这里插入图片描述

在Java中,我们可以使用@JsonSerialize注解来指定ID字段的序列化方式。通过ToStringSerializer类,我们可以确保ID在序列化时被转换为字符串。

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

public class SomeEntity {
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    // 其他属性和方法
}

2、前端处理

在前端,我们可以直接使用接收到的字符串ID,无需进行任何转换。这样可以确保ID的完整性和准确性。

四、总结

通过将后端的long类型ID转换为字符串,我们可以避免在传递给前端时出现的精度丢失问题。这种方法简单有效,可以确保ID在前后端之间的传递过程中保持准确无误。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • 后端id设置long类型时,传到前端,超过19位最后两位为00_java id发送到前端-CSDN博客

http://www.kler.cn/news/309974.html

相关文章:

  • k8s用StatefulSet部署redis
  • 图神经网络模型扩展(5)--2
  • 《Effective C++》第三版——让自己习惯C++
  • SpringDataJPA基础增删改查
  • 【OpenGL 学习笔记】01 - CLion 配置 CMake 运行初始 demo
  • 【PyTorch入门·求导相关】一文解释 PyTorch的求导 (backward、autograd.grad)
  • C#中抽象类和接⼝有什么区别?
  • 深入解析:联邦政策如何影响科技行业发展
  • windows10通过coursier安装scala
  • 什么是注解?
  • 硬件工程师笔试面试——电机
  • 25. MyBatis中的RowBounds是什么?如何实现内存分页?
  • Presto如何使用
  • CF EDU 169
  • 初写MySQL四张表:(1/4)
  • 【Kubernetes】常见面试题汇总(二十三)
  • Longman Dictionary of Contemporary English (朗文当代高级英语辞典)
  • MySQL高阶1783-大满贯数量
  • 使用python 将world的题库导入某学习软件的模板
  • 【RabbitMQ】工作模式
  • 20240911软考架构-------软考156-160答案解析
  • 【物联网】深入解析时序数据库TDengine及其Java应用实践
  • 力扣最热一百题——合并两个有序链表
  • do { ... } while (0) 的意义
  • 单片机拍照_将采集的RGB图像封装为BMP格式保存到SD卡
  • Pandas_sqlite
  • bestphp‘s revenge1
  • 排序----数据结构
  • 9.18日常记录
  • cmd修改游戏数据处理量大小