Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-JSON数据解析问题(数字正在四舍五入到其他数字)_Javascript_Node.js - Fatal编程技术网

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

JavaScript-JSON数据解析问题(数字正在四舍五入到其他数字),javascript,node.js,Javascript,Node.js,我是JavaScript新手,面临一个问题 我有一个API要使用,它返回的响应为 “数据”:[{name:'fileName.png',id:1575890170351016000}]用于给定的GET请求。稍后,我将此id字段用于其他一些操作 问题-当我使用curl点击API时,我收到的id值为-1575890170351016059,但如果我尝试通过脚本获取它,我会得到-1575890170351016000。我怎样才能解决这个问题。我希望它与我得到的回应相同 "data": :[{name

我是JavaScript新手,面临一个问题

我有一个API要使用,它返回的响应为
“数据”:[{name:'fileName.png',id:1575890170351016000}]
用于给定的GET请求。稍后,我将此id字段用于其他一些操作

问题-当我使用curl点击API时,我收到的id值为-1575890170351016059,但如果我尝试通过脚本获取它,我会得到-1575890170351016000。我怎样才能解决这个问题。我希望它与我得到的回应相同

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

我正在使用节点获取库来执行get请求。我在处理java脚本中的数字时了解到了精度问题,但不知道该库将响应转换为json对象的确切位置。

请尝试使用字符串作为id,因为数字没有那么大的值

在发送响应时

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

它将解决这个问题。

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

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

我尝试在Chrome控制台中键入此对象,但收到了相同的“错误”:

当我检查对象时,舍入是因为数字太大。因为您不能更改他们的API,所以可以使用JSON BigInt,如下所示

请参见首页上的示例


接下来需要做的就是看看是否可以使用Node Fetch只获取字符串(而不是对象),然后使用JSON.JSON bigint自己解析它如果我尝试通过脚本获取它,你的确切意思是什么?如何访问此值?
Number.MAX_SAFE_INTEGER
生成9.007199254740991E+15,该值略小于数字1.575890170351016059E+18。这就是最后3位丢失的原因。该数字太大,但您可以将其保留为字符串。相应地更改API,JS将在将JSON解析为对象时保留字符串。(还要注意,没有JSON对象。JSON是看起来非常类似或完全类似JS对象文本的文本)谢谢大家。这是第三方API,因此我无法更改响应。有没有其他方法可以让我处理这个问题?谢谢你的快速回复。这是第三方API。我不能改变回答。还有其他方法吗?当您将响应json转换为对象时,请对该特定键值使用字符串。这不是有效的json。您不能有
名称
id