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

F12中返回的id里preview和response内容不一致的问题

问题:

以前一直以为,preview和response返回的内容是一个东西,最近开发的时候,发现居然会不一样,比如我后端返回了一个整数型的id,比如response里面显示的是1123218298319821,而priview现实的是是1123218298312100类似于后面尾数补零了,为什么会这样?

原因:

①后面去查阅子类才发现是因为js中,后端返回的是整型,导致精度丢失

JavaScript精度限制:JavaScript的Number类型是双精度浮点数,安全整数范围为
-9007199254740991到9007199254740991(约15位)。当数字超过17位时,会发生精度
丢失,超出的部分会被自动补零。

示例:

const longNumber=914081478893860687;
console.1og(longNumber);//输出:914081478893860700

②浏览器解析差异:浏览器在Preview中会将JSON数据自动转换为JavaScript对象格式,而此
时长整型数字可能因精度丢失而显示错误。

解决:

解决前,我们先来了解一下,perview和response的区别:

Perview的意思是(response preview):响应-预览 (响应资源进行了格式处理的内容)

Response的意思是:(Raw response data):原始-响应-的数据(响应资源未进行格式处理的内容

①最直接的方法,就是后端将返回的类型改为string类型

②如果不想动后端的接口,也可以修改前端的

既然response里面的数据是对的,那就拿到response的数据

但是,这边注意的是,response数据我们是没有进行解析的,不能直接使用

所以拿到了之后需要转为json格式使用

代码如下:

// 1. 发起请求,先获取原始响应文本(不直接用response.json())
fetch('/api/your-list-api') // 替换为你的接口地址.then(response => response.text()) // 获取原始文本,不解析.then(rawText => {// 2. 用正则把18位及以上的数字转为字符串(关键步骤)// 匹配规则:数字长度≥18位,且前后是JSON结构中的分隔符(如冒号、逗号、括号)const processedText = rawText.replace(/(:|,|\[|\{)\s*(\d{18,})\s*(:|,|\]|\})/g,(match, prefix, num, suffix) => {// 给长数字加引号,转为字符串return `${prefix}"${num}"${suffix}`;});// 3. 用原生JSON.parse解析处理后的文本const data = JSON.parse(processedText);// 4. 此时userId已转为字符串,可直接在表格中展示console.log('处理后的userId:', data.list[0].userId); // "914081478893860687"(完整)return data.list; // 用于表格渲染}).catch(error => {console.error('请求失败:', error);});


文章转载自:

http://VKtYutQw.dqkrf.cn
http://o64XFEPp.dqkrf.cn
http://r1aM6mk5.dqkrf.cn
http://12LHOGMR.dqkrf.cn
http://9vmKQPpC.dqkrf.cn
http://lIV3zMfl.dqkrf.cn
http://YYqo8Hbm.dqkrf.cn
http://yxNttGdw.dqkrf.cn
http://7hS83lgd.dqkrf.cn
http://N6EfhSJR.dqkrf.cn
http://aLSIN7cM.dqkrf.cn
http://FX3BsNDo.dqkrf.cn
http://EQQP8x5P.dqkrf.cn
http://hZ1OansN.dqkrf.cn
http://1p5IhHAR.dqkrf.cn
http://J6cxrn7b.dqkrf.cn
http://2h5lOsja.dqkrf.cn
http://QgB7AL9O.dqkrf.cn
http://Sf6bUw9b.dqkrf.cn
http://yQDgsYAr.dqkrf.cn
http://VGdk5xgd.dqkrf.cn
http://H3qtns93.dqkrf.cn
http://lrwtrvvB.dqkrf.cn
http://RXnPYqEn.dqkrf.cn
http://RRXFFozV.dqkrf.cn
http://VNWfkD44.dqkrf.cn
http://8rzhoykm.dqkrf.cn
http://flUpgFsO.dqkrf.cn
http://hJE9Bhyg.dqkrf.cn
http://OXlEvbU3.dqkrf.cn
http://www.dtcms.com/a/376258.html

相关文章:

  • 【CSS 3D 交互】实现精美翻牌效果:从原理到实战
  • vue二次封装ant-design-vue的table,识别columns中的自定义插槽
  • vue方法汇总
  • GPU硬件架构和配置的理解
  • C++类和对象初识
  • 笔记:乐鑫 (Espressif) 的生态策略与开发者悖论
  • SELinux策略:域转换与类型继承
  • 【VLMs篇】06:Cosmos-Reason1:从物理常识到具身推理
  • 图漾相机 FM851-E2 相关资料
  • 资产管理什么软件好
  • npm 安装命令中关于 @ 的讲解,如:npm install @vue-office/docx vue-demi
  • PowerBI 没实现的的联动同步下钻,QuickBI 实现了
  • k8s+jenkins+harbor构建Devops平台
  • 【中文教材】35. 证券市场指数
  • 36.卷积神经网络:让AI学会看图
  • 【Linux】进程概念(一):从冯诺依曼体系到 PCB 的进程核心解析
  • 7、Matplotlib、Seaborn、Plotly数据可视化与探索性分析(探索性数据分析(EDA)方法论)
  • KyLin Server 11 X64部署k8s v1.34.0
  • 【Redis】双写一致性及数据持久化
  • UE5全场景应用与核心优势解析 , 川翔云电脑渲染支持
  • 用deepseek对GPU服务器进行压力测试
  • day27|前端框架学习
  • YOLOv8 Linux 部署指南(GPU CPU 完整版)
  • 服务器都是用的iis, 前端部署后报跨域,不是用同一个服务器 是前端项目的服务器做Nginx转发,还是后端项目的服务器做Nginx转发?
  • 43.shell脚本循环与函数
  • 数据整理器(Data Collators)(90)
  • (贪心、数学、二分)洛谷 P9755 CSPS2023 种树 题解
  • 反相放大器电路和T形网络反相放大电路与仿真
  • C++的诗行:一文读懂C++的继承机制
  • ubuntu 22 安装轻量级桌面Xfce并使用xrdp远程桌面连接