【问题标题】:While the JSON is being received from the backend, the last 2 digits of a long are removed从后端接收 JSON 时,删除了 long 的最后 2 位
【发布时间】:2021-02-02 21:27:07
【问题描述】:

如果我尝试从我写的后端获取 JSON 响应,我会得到以下完全正确的响应:

{
  "status": "ok",
  "get": {
    "5b7e4b0b-fc98-4107-ab72-32577440e02e": {
      "isUser": false,
      "permissions": {
        "play": true,
        "disconnect": true,
        "debug": false,
        "color": false,
        "leaderboard-collect-voice": true,
        "view-bot-log": false,
        "command-boobs": false,
        "embed-builder": false,
        "clear": false,
        "admin": false,
        "skip": true,
        "w2g": true,
        "pause": true,
        "clear-queue": true,
        "leaderboard": true,
        "rank-self": true,
        "rank-other": true,
        "leaderboard-collect-text": true,
        "queue": true,
        "move-to-me": false
      },
      "id": 0
    },
    "d902f18f-95ad-432c-9ee9-27e63ff6fce1": {
      "isUser": false,
      "permissions": {
        "play": false,
        "disconnect": false,
        "debug": false,
        "color": false,
        "leaderboard-collect-voice": false,
        "view-bot-log": false,
        "command-boobs": true,
        "embed-builder": false,
        "clear": false,
        "admin": false,
        "skip": false,
        "w2g": false,
        "pause": false,
        "clear-queue": false,
        "leaderboard": false,
        "rank-self": false,
        "rank-other": false,
        "leaderboard-collect-text": false,
        "queue": false,
        "move-to-me": false
      },
      "id": 767965825293746217
    }
  }
}

但是,如果 Chrome 尝试从服务器的响应中获取正确的数据,但在预览和网站的 JavaScript 中获取的数据错误值。我试图改变这个值,但没有任何效果。似乎每次最后2位都被零替换。

【问题讨论】:

  • 您是否将 id 存储为数字?尝试将 id 存储为字符串
  • @sonEtLumiere 我的问题是 json 是由 GSON 生成的,我不知道如何告诉 GSON 将 long 存储为字符串。我已经在看,但我没有找到任何相关信息。 js不应该使用int64吗?所以得到一个长整数应该不是问题。
  • 呃,我想我找到了一些东西:stackoverflow.com/questions/48104306/…
  • 确定吗?这就是 JavaScript 数字类型的工作原理。它只能模拟高达 2^53 - 1 的整数,您的 idwell 以上。有关 Number 数据类型限制的更多详细信息,请参阅isSafeInteger() 和朋友。

标签: javascript json google-chrome backend


【解决方案1】:

这与 javascript 如何处理数字有关。即使存储很长,您的数字仍然“太大”,不能表示为 Javascript 数字。您最好将其存储为字符串。

查看Stackoverflow subject 了解更多详情。有些人提出了替代解决方案。

【讨论】:

    猜你喜欢
    • 2020-02-19
    • 2017-06-01
    • 2021-06-16
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2017-05-13
    相关资源
    最近更新 更多