【发布时间】:2016-05-10 14:19:35
【问题描述】:
我对 node.js 很陌生,我正在使用一个 rest api,我遇到了一个烦人的问题,我无法解决这个问题。
这是问题所在:api 通过 POST 接收一个 json 对象。在这个 json 对象中,有一些属性是 bigint。让我举一个这些对象的例子:
{
"items": [
{
"appid": 730,
"classid": "2222",
"id": 99,
"instanceid": "instanceID",
"market_name": "Market name"
},
{
"appid": 730,
"classid": "2222",
"id": 99,
"instanceid": "instanceID",
"market_name": "Market name"
}
],
"message": "Mensagem de teste",
"user": 76561197960275584
}
在服务器端,用户属性返回 76561197960275580。这是一个 JS 舍入问题,我尝试使用许多包(bignumber.js、json-bigint 等)来解决它,总共有 5 个解决方案,但没有一个对我有用。我只是不能使用它们,因为当 json 对象到达服务器时,它的 int 属性已经四舍五入了。让我在这里放一段我的节点代码。
var express = require('express');
var bodyParser = require('body-parser');
var api = express();
api.use(bodyParser.urlencoded({ extended: false }));
api.use(bodyParser.json());
api.post('/import', function importEndPoint(req, res) {
console.log('req.body.user=' + req.body.user);
});
当我 console.log(req.body) 时,这些值已经四舍五入了。
正如我所说,我尝试了许多库来解决。我已经阅读了很多像我这样的问题的答案,但它仍然不起作用。我确定这是我想念的新手,但我就是不知道它是什么。
你能帮帮我吗? api 使用 express 4,我无法更改 json 对象以使用字符串发送这些值。
提前感谢您的帮助。
【问题讨论】:
-
最好的办法是自己缓冲发布的数据,将 bigint 转换为字符串,然后用
JSON.parse()解析它。这意味着您可能必须自己编写该中间件。
标签: javascript json node.js rest