JSON 格式化与大整数精度:源代码和树视图怎么看
整理接口响应时,可以用 JSON 编辑器校验语法、排成两空格缩进,再复制或下载原稿。遇到订单号、大整数或重复键,核对「源代码」里的原始文本;树视图方便浏览结构,但它展示的是 JavaScript 解析后的值。
先区分三种操作
| 操作 | 得到什么 | 需要注意什么 |
|---|---|---|
| 校验 | JSON 语法是否有效及可取得的错误位置 | 不检查业务字段、接口契约或数值精度 |
| 格式化、压缩 | 多行缩进文本或单行文本 | 只调整标记之间的空白,保留数字和重复键的原始写法 |
| 树视图 | 可展开的对象、数组和值 | 使用 JSON.parse,可能出现数值精度损失与重复键覆盖 |
用一段样例核对原稿
将下面文本粘进「源代码」,也可以保存为 .json 后用「打开文件」载入:
{"id":9007199254740993,"huge":1e999,"tag":"旧","tag":"新","items":[1,2]}
- 点「校验」,这段文本的语法可以通过。有效不等于所有系统都能精确接收其中的数值。
- 点「格式化」,检查每层为两空格缩进,
9007199254740993、1e999和两个tag都还在。 - 点「压缩」,输出重新变成单行;数值和重复键仍应保留。格式化并不是先解析再把对象序列化回来。
- 切到树视图观察结构。大整数可能呈现为
9007199254740992,1e999超出 JavaScript 有限数值范围;tag只剩最后的“新”。不要用树里的值替换原稿。 - 返回源代码,点「复制」取走当前文本,或用「下载 JSON 原稿备份」保存文件。重新用文本编辑器打开下载文件,核对以上三个位置。
如果编号只用来标识对象、不参与运算,可以与接口接收方约定写成 "id":"9007199254740993"。金额和高精度小数也需要双方约定表示方式与解析类型,不能靠排版工具修复下游精度。重复键容易在不同接收系统中产生不同解释,交付前应手动整理为明确、唯一的字段。
错误定位与恢复
试着将数组改成 "items":[1,2,],再点「校验」。尾随逗号不属于标准 JSON,需要手动删除;工具不会自动修复。注释、单引号字符串和未加双引号的键也不支持。
浏览器提供错误位置时,页面会标出错误行,并显示「定位错误」。位置可能落在实际问题之后,检查相邻字符,特别是前一项的逗号、引号和括号。某些错误没有可用的行列信息,此时按错误文本排查。编辑器的行号按逻辑行计数,长行在屏幕上折行不会增加行号。
修复前可先下载原稿备份,即使文本尚未完成也能保存。自动草稿不是独立备份:若显示保存失败或跨标签页冲突,先保留当前文件,再决定加载已保存草稿还是覆盖。清除站点数据会删除本地草稿。
大文本和数据流边界
打开文件最多读取 2 MiB。超过 40,000 字符暂停语法高亮;超过 100,000 字符暂停实时解析和树视图,此时「校验」仍可单次执行,格式化和压缩需先缩减内容。格式化超过 100 层嵌套会被拒绝,排版后文本也有长度保护;触发限制时请按完整对象或数组拆分,不要直接截断成无效片段。
读取文件、解析和排版都在浏览器本地完成,不会为这些操作上传 JSON。页面资源仍需要加载,不能由此推断断网后一定能重新打开工具。共用设备上应留意浏览器内保存的草稿。
如果字段里还有 Unix 时间戳,可将对应值手动复制到时间戳转换核对日期,再回到原稿检查字段单位。
常见问题
格式化会把大整数改掉吗?
格式化和压缩只调整标记之间的空白,保留原始数字、字符串转义和重复键。树视图使用 JavaScript 解析值,大整数可能失真,重复键只显示最后一个值,应以源代码为准。
JSON 有效就代表接口能精确读取吗?
不代表。语法校验通过只说明文本符合 JSON 语法,下游数值类型仍可能溢出或丢失精度。长编号可按接口约定使用字符串,金额等高精度数值应与接收方明确表示和解析方式。
没写完的 JSON 能备份吗?
可以使用「下载 JSON 原稿备份」保存当前文本,不要求语法通过。草稿只保存在当前浏览器,存储失败或冲突时应先下载备份。
常见问题
- 格式化会把大整数改掉吗?
- 格式化和压缩只调整标记之间的空白,保留原始数字、字符串转义和重复键。树视图使用 JavaScript 解析值,大整数可能失真,重复键只显示最后一个值,应以源代码为准。
- JSON 有效就代表接口能精确读取吗?
- 不代表。语法校验通过只说明文本符合 JSON 语法,下游数值类型仍可能溢出或丢失精度。长编号可按接口约定使用字符串,金额等高精度数值应与接收方明确表示和解析方式。
- 没写完的 JSON 能备份吗?
- 可以使用「下载 JSON 原稿备份」保存当前文本,不要求语法通过。草稿只保存在当前浏览器,存储失败或冲突时应先下载备份。