繁体   English   中英

JavaScript-JSON 数据解析问题(数字四舍五入为其他数字)

[英]JavaScript- JSON data parsing issue (Number is getting rounded to some other number)

我是 JavaScript 新手,遇到了一个问题。

对于给定的 GET 请求"data":[{name: 'fileName.png', id: 1575890170351016000 }]我有一个 API 可以使用它返回响应为"data":[{name: 'fileName.png', id: 1575890170351016000 }] 后来我将此id字段用于其他一些操作。

问题 -当我使用 curl 访问 API 时,我收到的 id 值为 - 1575890170351016059但如果我尝试通过我的脚本获取它,我将其获取为 - 1575890170351016000 我该如何解决这个问题。 我希望它与我在响应中得到的数字相同。

我正在使用node-fetch库来执行我的获取请求。 我在处理 java 脚本中的数字时阅读了精度问题,但不知道这个库究竟在哪里将响应转换为 json 对象。

在 Chrome 开发者控制台中,我尝试创建一个数字为 1575890170351016059 的变量。我看到它实际上被设置为 1575890170351016000。所以 JavaScript 本身不喜欢这种大小的数字,实际上将其四舍五入!

Asim 的响应是正确的,假设您可以获取 API 以将 ID 作为字符串发送对象。 但是,当您调用 JSON.parse(或 node-fetch 在字符串上调用函数 JSON.parse)时,您最终会遇到舍入错误!

我尝试将此对象输入 Chrome 控制台并收到相同的“错误”:

[{name: 'fileName.png', id: 1575890170351016123 }]

当我检查对象时,由于数字太大而发生四舍五入。 由于您无法更改他们的 API,您可以使用 JSON-BigInt,在此处找到

https://github.com/sidorares/json-bigint

请参阅首页上的示例。

所需要做的就是看看您是否可以使用 Node-Fetch 来获取字符串(而不是对象),然后自己使用 json-bigint 进行 JSON.parse

请尝试使用字符串作为 id,因为数字没有那么多价值。

在发送响应时。

 "data": :[{name: 'fileName.png', id: '1575890170351016059' }] 

它将解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM