JavaScript 在使用 blob 构造函数时剪切长数值

JavaScript cuts a long numeric value while using blob constructor

我有一个 http 响应,它包含 response.data,有很多长整数。当我尝试通过以下方式使用数据创建 blob 资源时:

var blob = new Blob([ response.data ], {
   type : response.headers('Content-Type')
});

数据被解析并且数字被视为整数,由于 JavaScript 处理数字的方式,最后 4 位数字被删除(替换为 0)。当我在数字中添加一个字母时,例如"823758273883758237857823758x" 它被视为字符串并正确处理。

如何在不添加任何不必要的字母的情况下强制 JS 将数字视为字符串而不是整数?

编辑:示例 response.data 内容:

"sep="x","Time","Id","Name","1234512345123451234""

在JSON中,字符串内容总是用双引号括起来。 像“123”将被解析为字符串,而 123 将被解析为数字。 所以我认为根本问题在于您的数据源。生成 JSON 字符串时尝试将数字转换为字符串。

你可以试试 String(theNumber)

我不知道这个数字是从哪里来的,但你也可以在实际发送之前强制它先是字符串。

我试过:

JSON.stringify(123)JSON.stringify(String(123))

及其结果:

123

"123"

,分别

// number
a = '823758273883758237857823758';
console.log(a, JSON.parse(a));

// string
b = '"823758273883758237857823758"';
console.log(b, JSON.parse(b));

// error
c = '823758273883758237857823758x';
console.log(c, JSON.parse(c));

数字不是字符串。数字值(不在引号中)将被解析为 JavaScript 数字。字符串值(在引号中)将被解析为字符串。一个字符串不需要随机字符来保持它是一个字符串;但是带有随机字符的数字不会变成字符串,而是会引发解析错误。

如果不满意,请显示更多细节,包括 response.data 的内容,and/or 生成它的代码。