【问题标题】:Node.js rest api with json and bigint properties带有 json 和 bigint 属性的 Node.js REST api
【发布时间】: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


【解决方案1】:

创建此字段字符串然后自行解析它的最简单解决方案,否则您必须破解正文解析器,并更改转换此字段的方式。

【讨论】:

  • 问题作者已经声明这不是一个选项。
  • 谢谢。我会读到这个。观看视频我看到有些人更喜欢另一个中间件而不是 body-parser。我将搜索这些选项。
  • @Freyday 抱歉,我看不到我的答案,作者所说的问题不是一个选项。
猜你喜欢
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 2017-01-04
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多