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

vue项目通过json-bigint在前端处理java雪花id过长导致失去精度问题

这里 我简单模仿了一个接口
在这里插入图片描述
这里 我单纯 返回一个long类型的雪花id
然后 前端 用 axios 去请求
在这里插入图片描述
大家知道 axios 会对请求数据做一次处理 而我们 data才是拿到我们java这边实际返回的东西 简单说 就是输出一下我们后端返回 的内容

这里 我们网络中显示的是 358661018680954880
在这里插入图片描述
但神奇的一幕 发生了 我们实际输出的是 358661018680954900
在这里插入图片描述
这个问题 我之前的文章也解释过 这叫 java雪花id超长 导致前端接受失去精度
因为 前端js的数字类型 number 最大容量小于 java的long
导致 无法负载的值被四舍五入了
我之前说过 后端解决 直接转字符串即可
但其实 前端也可以通过第三方插件 json-bigint来处理此问题
我们还是先安装依赖
终端输入

npm install json-bigint

在这里插入图片描述
然后 我们可以修改一下发送请求的代码

<script>
import axios from "axios";
import JSONbig from 'json-bigint';export default {name: 'App',data(){return {}},created(){axios({url: '/books',headers: {// 可以根据需要设置请求头},// 使用transformResponse选项将响应数据进行自定义处理transformResponse: [(data) => {// 使用JSONbig对返回的数据进行处理return JSONbig.parse(data);}]}).then(res => {console.log(res.data);}).catch(error => {console.log(error);});},
}
</script>

简单说 就是 在axios的transformResponse中 用json-bigint提供的parse函数去处理一下
这样 我们返回的内容如果过程 他就会帮我们分段处理
在这里插入图片描述
放不下 他会帮我们分成数组
在这里插入图片描述
例如 一个对象中 id超长 那么 原来的id字段就会变成一个这样的数据 放不下就帮你分成两个数组下标 到时 你自己再拼合一下就好了

然后 我们想将数据传回给后端 我们可以先将他们处理成字符串
例如 我们将 then 函数中的内容改成这样

let id = res.data.c.join("");
console.log(id);

我们 拿到 c的数组
然后 将他拼成字符串
我们运行项目 看网络
在这里插入图片描述
然后看控制台
在这里插入图片描述
然后 这里一个知识点 BigInt js另一个种数字类型 而他的容量是要比Number大的
我们引入一下第三方依赖

npm install big-integer

然后 我们将代码改成这样

<script>
import axios from "axios";
import JSONbig from 'json-bigint';
import bigInt from 'big-integer';export default {name: 'App',data(){return {}},created(){axios({url: '/books',headers: {// 可以根据需要设置请求头},// 使用transformResponse选项将响应数据进行自定义处理transformResponse: [(data) => {// 使用JSONbig对返回的数据进行处理return JSONbig.parse(data);}]}).then(res => {let id = res.data.c.join("");id = bigInt(id);console.log(id);}).catch(error => {console.log(error);});},
}
</script>

这里 我们用big-integer处理超长数字类型的数据
运行结果如下
在这里插入图片描述
这里这个value 就是我们要的东西了

但其实 如果你想把id还给后端 就不需要big-integer了
我们直接换字符串 后端的long 会自动转换的 例如 这里我们写个属性类
在这里插入图片描述
就一个字段 是个long类型的id字段
然后我在写个接口
接收前端传过来的 一个 属性类对象 就是只有一个long id字段的属性类的对象
在这里插入图片描述
然后 前端直接改成这样

<script>
import axios from "axios";
import JSONbig from 'json-bigint';
//import bigInt from 'big-integer';export default {name: 'App',data(){return {}},created(){axios({url: '/books',headers: {// 可以根据需要设置请求头},// 使用transformResponse选项将响应数据进行自定义处理transformResponse: [(data) => {// 使用JSONbig对返回的数据进行处理return JSONbig.parse(data);}]}).then(res => {let id = res.data.c.join("");axios.post('/books', { id: id }).then(res => {console.log(res.data);}).catch(error => {console.log(error);});}).catch(error => {console.log(error);});},
}
</script>

这里 我们处理成字符串后 马上就调用 post请求 将字符串id仍会给了后端
那么 我们这个id是字符串类型的 而java属性类中是用 long接的
能行吗?
我们直接运行
在这里插入图片描述
前端控制台 可以看到传了一个对象 其中有一个字段 字符串的id
我们看java控制台
在这里插入图片描述
很明显 他已经自动帮我们 让字符串变成 long了

相关文章:

vue项目通过json-bigint在前端处理java雪花id过长导致失去精度问题

这里 我简单模仿了一个接口 这里 我单纯 返回一个long类型的雪花id 然后 前端 用 axios 去请求 大家知道 axios 会对请求数据做一次处理 而我们 data才是拿到我们java这边实际返回的东西 简单说 就是输出一下我们后端返回 的内容 这里 我们网络中显示的是 35866101868095488…...

【全志V3s】SPI NAND Flash 驱动开发

文章目录 一、硬件介绍V3s的启动顺序 二、驱动支持U-Boot驱动主线 Linux 驱动已经支持 三、烧录工具 xfel四、构建U-Boot&#xff08;官方的Uboot&#xff09;先编译一下开始spi nand flash 代码层面的适配修改menuconfig配置ARM architecture配置Support for SPI Nand Flash o…...

【二叉树】二叉树展开为链表-力扣 114 题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...

NLP文本生成全解析:从传统方法到预训练完整介绍

目录 1. 引言1.1 文本生成的定义和作用1.2 自然语言处理技术在文本生成领域的使用 2 传统方法 - 基于统计的方法2.1.1 N-gram模型2.1.2 平滑技术 3. 传统方法 - 基于模板的生成3.1 定义与特点3.2 动态模板 4. 神经网络方法 - 长短时记忆网络(LSTM)LSTM的核心概念PyTorch中的LST…...

OpenBA:开源模型家族再添一员!从头训练的15B中英非对称Encoder-Decoder结构双语模型...

苏州大学从头训练的双语非对称Encoder-Decoder模型OpenBA已正式开源&#xff01; 主要亮点包括&#xff1a; 亮点一&#xff1a;此模型为中文开源社区贡献了一个有代表性的编码器解码器大语言模型&#xff0c;其训练过程&#xff08;包括数据收集与清洗、模型构建与训练&#x…...

安防视频监控平台EasyNVR无法控制云台,该如何解决?

TSINGSEE青犀视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。在智慧安防等视频监控场景中&#xff0c;EasyNVR可提供视频实时监控直播、云端…...

基座向量施密特正交化

最近再次细细的阅读了向量施密特正交化&#xff0c;重新系统梳理一下 一、正交基地与向量的正交分解 二、基化成标准正交基&#xff0c;是什么意思 将一个向量空间中的基向量通过某种方式转化为一组标准正交基&#xff0c;是指将原有的基向量进行调整&#xff0c;使得它们满足…...

OpenCV图像金字塔

什么是图像金字塔&#xff1f; 向上采样 &#xff1a;cv.pyrUp(img) 向下采样 : cv.pyrDown(img) 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#图像的读取 img cv.imread("lena.png")#进行图像采样 up_img cv.pyrUp(img) #上…...

Arduino驱动MMA7361/MMA7360三轴加速度传感器(惯性测量传感器篇)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 MMA7361三轴加速度传感器是替代停产的MMA7260三轴加速度传感器,三轴加速度传感器是一种可以对物体运动过程中的加速度进行测量的电子设备,典型互动应用中的加速度传感器可以用来对物体的姿态或者运动方向进行检测…...

ceph分布式存储

目录 一、概述 1、特点 2、组件 3、架构图 二、分布式部署 1、环境拓扑 2、实验准备 3、ceph安装 安装 初始化monitor 同步管理信息 安装mgr&#xff08;管理守护进程&#xff09; 安装rgw 创建mds服务 OSD安装 4、dashboard安装 开启dashboard模块 生成签名 …...

DA1--用pandas查看网站用户数据

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件&#xff0c;它记录了牛客网的部分用户数据&#xff0c;包含如下字段&#xff08;字段与字段之间以逗号间隔&#xff09;&#xff1a; Nowcoder_ID&#xff1a;用户ID …...

JWT令牌

一、JWT&#xff08;Json Web Token&#xff09;能干什么 1、安全认证&#xff08;权限认证&#xff09; 比如登录系统的时候&#xff0c;服务器会检查前端请求数据中携带的token信息&#xff0c;符合标准则允许访问&#xff0c;不符合则拒绝你的访问请求。 2、信息传递 比…...

uni-app使用CSS实现无限旋转动画

本来想用uni.createAnimation创建一个旋转动画&#xff0c;发现转完一圈后就不动了&#xff0c;没法循环旋转&#xff0c; 后来又用setInterval每隔一个周期就把旋转角度加180度&#xff0c;发现运行一段时间后动画逐渐崩坏&#xff0c;应该是动画的周期和定时器的周期时间没有…...

java面向对象(八)

文章目录 一、abstract关键字的使用1.概念2. abstract修饰类:抽象类3.abstract修饰方法&#xff0c;抽象方法4.abstract使用上的注意点&#xff1a;5.抽象类的匿名子类 二、计算一段代码执行所花费的时间三、接口的使用1.接口的使用2.定义接口中的成员3.代码demo4.Java类可以实…...

【proverif】proverif的下载安装和初使用

文章目录 一、proverif下载1. 下载proverif安装包2. 解压proverif安装包3. 点开其中的README&#xff0c;安装graphciz和gtk4. 查看安装是否成功5. 测试 一、proverif下载 1. 下载proverif安装包 官网&#xff1a;proverif 首先下载全过程无需开外网&#xff0c;而且安装包下…...

浙江大学《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许

浙江大学《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许...

Centos7.9 一键脚本部署 LibreNMS 网络监控系统

前言&#xff1a; LibreNMS 是个以 PHP/MySQL 为基底的自动探索网络监控系统 LibreNMS 官网 版本23.8.2-52-g7bbe0a2 - Thu Sep 14 2023 22:33:23 GMT0700数据库纲要2023_09_01_084057_application_new_defaults (259)Web 服务器nginx/1.20.1PHP8.1.23Python3.6.8DatabaseMa…...

【大数据之Kafka】十六、Kafka集成外部系统之集成Flume

Flume 是一个在大数据开发中非常常用的组件。可以用于 Kafka 的生产者&#xff0c;也可以用于 Kafka 的消费者。 Flume安装和部署&#xff1a;https://blog.csdn.net/qq_18625571/article/details/131678589?spm1001.2014.3001.5501 1 Flume生产者 &#xff08;1&#xff09…...

java学习--day3 (运算符、if循环、switch-case结构)

文章目录 今天的内容1.运算符1.1关系运算符1.2逻辑运算符1.3逻辑运算符的短路原则 2.分支结构【重点】2.1if分支2.2if-else分支2.3if-else的嵌套写法2.4if-else if 分支结构2.5swicth-case结构 扩展知识点 1.八大基本数据类型整型: byte short int long浮点: float double字…...

ActiveMQ、RabbitMQ、RocketMQ、Kafka区别

一、消息中间件的使用场景 消息中间件的使用场景总结就是六个字&#xff1a;解耦、异步、削峰 1.解耦 如果我方系统A要与三方B系统进行数据对接&#xff0c;推送系统人员信息&#xff0c;通常我们会使用接口开发来进行。但是如果运维期间B系统进行了调整&#xff0c;或者推送…...

十 438. 找到字符串中所有字母异位词

438. 找到字符串中所有字母异位词https://leetcode.cn/problems/find-all-anagrams-in-a-string/ 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd"…...

MPC模型下四节电池SOC均衡控制技术:全网首发的效果超群解决方案

MPC模型预测控制四节电池SOC均衡 [1]全网首发电池SOC均衡控制&#xff0c;当前领域国内期刊罕有有人发。 [2]效果超群&#xff0c;根据电池均衡路径完美规划均衡电流&#xff0c;电流由大到小&#xff0c;避免均衡后期均衡路径问题。电池均衡这玩意儿听着高大上&#xff0c;说白…...

Finalshell连接失败?排查SSH登录密码问题的终极指南

1. Finalshell连接失败的常见原因 当你使用Finalshell连接远程服务器时&#xff0c;遇到反复提示输入密码却无法连接的情况&#xff0c;这可能是由多种因素导致的。作为一个经常需要远程管理服务器的开发者&#xff0c;我遇到过太多次这种情况了。每次看到那个不断弹出的密码输…...

Kimi-VL-A3B-Thinking Chainlit定制化开发:添加历史记录/多用户会话/图片标注功能

Kimi-VL-A3B-Thinking Chainlit定制化开发&#xff1a;添加历史记录/多用户会话/图片标注功能 1. 项目背景与模型介绍 Kimi-VL-A3B-Thinking是一款基于混合专家架构(MoE)的开源视觉语言模型(VLM)&#xff0c;在多模态推理和长上下文理解方面表现出色。该模型仅激活2.8B参数就…...

知识图谱项目实战(基础概念以及工具使用)【第一章】

在RAG以及Agent的应用领域中,知识图谱可以增强知识库的检索效果(通过搭建知识图谱数据库(GraphRag)实现).在教育医疗以及金融领域应用广泛.图谱&#xff08;graph&#xff09;有节点和边组成一.知识图谱理论1.1知识图谱的整体架构1.2知识图谱架构实现流程1. 文本标注(Doccano标…...

2026年小学英语学习小程序排行榜

对于小学生而言&#xff0c;英语学习早已打破“只背单词、只刷习题”的单一模式&#xff0c;听、说、读、写全方位同步训练&#xff0c;才是提升英语能力的关键。2026年&#xff0c;市面上涌现出多款优质小学英语学习小程序&#xff0c;覆盖单词记忆、听力训练、阅读提升、语法…...

uniapp中如何用lottie-miniprogram加载json动画?5分钟搞定炫酷效果

Uniapp中5分钟集成Lottie动画&#xff1a;从原理到实战的完整指南 在移动应用开发中&#xff0c;精美的动画效果往往能显著提升用户体验。对于Uniapp开发者来说&#xff0c;Lottie-miniprogram提供了一种高效的方式&#xff0c;可以直接加载设计师导出的JSON动画文件&#xff0…...

从零到一:基于LLaMA-Factory的微调实战与核心参数精讲

1. 环境准备与LLaMA-Factory初探 第一次接触LLaMA-Factory时&#xff0c;我对着官方文档发呆了半小时——这个工具链实在太强大了&#xff0c;但新手很容易被各种依赖项劝退。这里分享我的踩坑经验&#xff1a;不要一上来就追求最新版本。去年12月我在RTX 3090上折腾v0.4.0时&a…...

FireRedASR-AED-L在Windows系统的部署问题解决方案

FireRedASR-AED-L在Windows系统的部署问题解决方案 1. 引言 如果你正在Windows系统上尝试部署FireRedASR-AED-L这个强大的语音识别模型&#xff0c;可能会遇到各种让人头疼的问题。环境配置、依赖冲突、GPU兼容性——这些都是Windows环境下部署深度学习模型时常见的拦路虎。 …...

nanomsg性能基准测试终极指南:不同消息大小下的吞吐量对比分析

nanomsg性能基准测试终极指南&#xff1a;不同消息大小下的吞吐量对比分析 【免费下载链接】nanomsg nanomsg library 项目地址: https://gitcode.com/gh_mirrors/na/nanomsg nanomsg是一个轻量级、高性能的消息传递库&#xff0c;专为解决常见的通信模式而设计。作为na…...