我已经看到了其他相关问题,但是他们没有解决我的问题,或者我可能错过了完全相同的已解决查询。
这是问题所在。我调用的服务返回一个JSON响应,其中一些键具有大数值作为值,我想将它们传递给我的视图并显示。问题是他们正在完善,我不想要。实际上它进入了我现在正在做的缓冲区:
JSON.parse(res.body.toString()) // res.body is a Buffer
并发送到视图。如何以字符串的形式保留整个数字并将其发送到视图,以便UI完全相同。
我认为可能会有替代品会有所帮助,但它也不起作用。
const replacer = (key, value) => {
if (typeof value === 'number') {
return JSON.stringify(value);
}
return value;
};
//78787878977987787897897897123456786747398
const obj = {
name: 'John',
income: 78787878977987787897897897123456786747398,
car: null
};
var buf = Buffer.from(JSON.stringify(obj));
console.log(buf.toString());
// console.log(JSON.stringify(buf.toString()))
// console.log('func res: ', replacer('key', 78787878977987787897897897123456786747398))
// console.log(obj.income.toString())
console.log(JSON.stringify(obj, replacer));
您可以推荐一些外部可信库,或者更好,仅通过直接代码向我建议解决方案。
修改
简而言之,结果是:在从服务器返回之前将响应转换为String
。一旦进入JS(在我的情况下为Buffer
),转换已经发生,这意味着从应用程序方面来说,没有任何东西可以用来检索它。
如果没有修改服务器响应,请告诉我是否有真正的解决方案。
答案 0 :(得分:2)
不幸的是,这个数字高于max_safe_integer,所以如果永远被解析为数字,即使它稍后被转换回字符串(例如{{1}函数,reviver
的第二个参数),它不可靠。但幸运的是,由于你有一个JSON字符串,你可以在JSON.parse
之前使用字符串值replace
数值。例如:
JSON.parse