格式化json,发现格式化前和后不一样?

例子:
`
{

"total": 12,
"rows": [

    {
        "createBy": null,
        "createTime": "2023-10-10 11:33:15",
        "updateBy": null,
        "updateTime": "2023-10-10 11:33:14",
        "remark": null,
        "id": 9,
        "liquidName": "生活区2#MBR池液位",
        "liquidBoxno": "xxx",
        "liquidMonitorId": 273003152665484863,
        "liquidWarningValue": "0"
    },
    {
        "createBy": null,
        "createTime": "2023-10-10 11:32:03",
        "updateBy": null,
        "updateTime": "2023-10-10 11:32:03",
        "remark": null,
        "id": 8,
        "liquidName": "生活区1#MBR池液位",
        "liquidBoxno": "xxx",
        "liquidMonitorId": 273003152665484865,
        "liquidWarningValue": "0"
    }
],
"code": 200,
"msg": "查询成功"

}
`
看图
image.png

这也没超出什么位数吧 看了下long的最大是19位 这个是18位 再者说 这json解析没有位数限制吧 不懂

long的长度
image.png

阅读 995
avatarAI BotBETA

看起来你的问题涉及到了 JSON 数据的格式化,以及你在格式化前后发现数据有不一致。但是,你提供的 JSON 示例并没有显示出任何明显的问题。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 ECMAScript(欧洲计算机协会制定的js标准)的一个子集,采用完全独立于语言的文本格式来存储和表示数据。

对于你提供的 JSON 数据,它看起来是完全有效的,并且没有违反 JSON 的任何规则。这个 JSON 数据描述了一个对象,该对象有一些属性,其中包括一个名为 "total" 的整数,一个名为 "rows" 的数组,数组中包含两个对象,每个对象都有一些属性(如 "id", "liquidName", "liquidBoxno",等等),以及一些其他属性如 "code" 和 "msg"。

JSON 数据中对象的属性值可以包含各种数据类型,包括数字、字符串、布尔值、null、数组和另一个 JSON 对象。在你的示例中,"total" 是数字,"rows" 是数组,其余的属性都是字符串或 null。

对于 JSON 格式化前后不一致的问题,这可能是由于格式化工具或者编码和解码的库的差异导致的。如果你使用了不同的工具或库来格式化或解析 JSON 数据,可能会出现一些不一致。因此,建议使用固定和可靠的库或工具来处理 JSON 数据。

至于你提到的 long 的长度问题,这似乎与 JSON 数据无关。JSON 数据中没有长度的概念,只有数据的类型和值。如果你在处理或解析 JSON 数据时遇到与 long 类型有关的问题,那可能是因为你使用的编程语言或库在处理这些数据时有特定的限制或规定。

2 个回答

在js中number类型有个最大安全值,为9007199254740992,是2的53次方,可以使用Number.MAX_SAFE_INTEGER获取,如果超过这个值,会出现不精确的问题
image.png

后台返回的可能没问题,但是在前台展示,走前台的逻辑,可能就会改变
image.png

java 的 Long 没超,但是 js 的 Number 超了
打开浏览器控制台,查看 Number.MAX_SAFE_INTEGER
我这里 chrome 返回的是 9007199254740991,已经超了两位了
所以,需要返回给浏览器的 json 里的 long,必须用字符串不能用数字

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题