[英]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.