跳到正文
BCBinary Code Translator
菜单

数据工具

JSON 格式化、压缩与校验工具

在浏览器本地格式化、压缩并校验 JSON,语法错误会给出便于定位的行列信息,同时提示超出 JavaScript 安全整数范围的数字。

输入只在当前浏览器标签页处理。本工具只解析数据,不执行表达式,也不会运行字符串中的代码。

如何使用 JSON 格式化工具

粘贴一个完整的 JSON 值,然后选择需要的操作。格式化和压缩都会先严格解析文档,因此不会把错误输入悄悄改写成看似正确的结果;校验只判断语法并保留原始文本。

  1. 粘贴符合 JSON 语法的对象、数组、字符串、数字、布尔值或 null。
  2. 选择 2 空格或 4 空格格式化,或者选择“压缩”移除无意义空白。
  3. 只需检查语法时使用“校验”;失败后先查看最早报告的行和列。
  4. 复制结果前检查大整数警告,尤其是数据库 ID、订单号和精确金额字段。

案例与预期行为

输入 输出 说明
{"name":"Ada","active":true} { "name": "Ada", "active": true } 小对象会按统一缩进展开,便于阅读和代码审查。
[1,2,{"ok":false}] [1,2,{"ok":false}] 压缩只移除无意义空白,不改变数组顺序和普通值。
{"message":"你好 👋"} 有效 JSON JSON 字符串支持 Unicode,中文和 Emoji 无需特殊转换。
{"a":1,} 尾随逗号附近报错 标准 JSON 不允许对象或数组最后一项之后继续保留逗号。
{"id":9007199254740993} 格式化结果并显示精度警告 语法有效,但 JavaScript Number 不能精确表示该整数。
{"code":"alert(1)"} 普通字符串 看起来像代码的文本仍然只是数据,不会被执行。

输入规范与 JSON 语法

一个 JSON 文档只能包含一个顶层值,可以是对象、数组、字符串、数字、true、false 或 null。对象属性名必须使用双引号;字符串中的双引号、反斜杠和控制字符需要转义。注释、单引号字符串、undefined、NaN、Infinity、十六进制数字和尾随逗号属于 JavaScript 或其他格式,不属于标准 JSON。

标记之间可以出现空格、制表符和换行。格式化只规范这些无意义空白,不会排序键名、推断类型、重命名字段或修改字符串内容。浏览器解析器通常会让重复键的最后一个值覆盖前面的值,因此包含重复键的文档虽然可能解析成功,语义仍然存在歧义。

  • 跨系统传输时优先使用 UTF-8。
  • 字符串内部的实际换行应写成 \n 转义。
  • 校验成功不代表字段符合业务接口的 Schema。

格式化、压缩与错误定位

格式化会先解析,再使用 2 或 4 个空格重新序列化。压缩采用相同解析过程,只是不输出多余空格和换行。两者都不是无损文本转换:重复键可能被合并,大整数或浮点数可能按 JavaScript 数值模型重新输出,原始数字写法也可能发生变化。

校验会把浏览器解析器给出的首个错误位置转换成从 1 开始的行列号。缺少引号或逗号时,解析器可能在后一个标记处才无法继续,因此报告位置有时位于真正错误之后。应先修复最早位置,再重新校验,而不是一次猜测所有后续报错。

  • 工具不会自动修复无效 JSON。
  • 压缩不是 gzip,也不是加密。
  • 语法校验不会检查必填字段、枚举和取值范围。

大整数与数值精度

JSON 标准本身没有 JavaScript 的 53 位整数限制,但浏览器会把数字解析成 IEEE 754 双精度浮点数。大于 9,007,199,254,740,991 或小于其负值的整数可能被舍入,即使语法完全正确。本工具会扫描整数标记,并在复制结果前给出提示。

数据库 ID、银行卡或订单编号、纳秒时间戳、密码学计数器以及需要精确保存的最小货币单位,通常应在数据契约中使用字符串,除非所有系统都明确支持任意精度数字。工具不会擅自改成 BigInt,因为 BigInt 不是 JSON 数据类型,JSON.stringify 也不能直接序列化。

  • 最大安全整数为 9007199254740991。
  • 9007199254740993 是典型不安全整数。
  • 小数同样受二进制浮点表示影响。

常见用途与工作流程

开发者常用它整理 API 响应、配置片段、日志载荷、Webhook 示例和浏览器导出数据。压缩适合比较空白开销、准备小型测试夹具或生成紧凑请求;校验适合先区分语法错误与服务端 Schema、权限或业务规则错误。

接口拒绝数据时,应先校验语法,再对照接口文档检查字段名和类型。比较两个文档时,可先用相同缩进格式化后再做 diff。即使页面本地处理,含密钥、Token 或个人信息的内容在截图、工单和聊天中分享前仍应脱敏。

  • 检查脚本或模板生成的 JSON。
  • 统一测试夹具格式后再提交代码。
  • 排查 Unicode 转义和嵌套数组。
  • 快速阅读第三方 API 示例。

错误边界与不提供的能力

常见错误包括缺少或多余逗号、字符串未闭合、非法转义、括号不匹配以及属性名未使用双引号。空输入会单独提示。超大或极深文档仍可能耗尽浏览器内存、触发调用栈限制或让页面暂时无响应,因为处理发生在当前标签页。

本工具不是 JSON Schema 校验器、JSONPath 查询器、差异比较器、规范化 JSON 实现或流式解析器。它无法保留注释和数字原始写法,也不保证来自不同生产者的键顺序可作为签名依据。签名、哈希和字节级比较必须使用协议指定的原始字节。

  • 不要把重新格式化的结果默认当作签名输入。
  • 字符串中的 URL、日期和 ID 不会被额外校验。
  • 实际容量上限由设备内存和浏览器决定。

安全与隐私注意事项

实现只使用 JSON.parse 和 JSON.stringify,不使用 eval、new Function、动态脚本注入或模板执行。字符串中的 HTML、JavaScript、SQL 或 Shell 片段都按普通文本处理。本批次也不会把输入写入 localStorage、sessionStorage、IndexedDB 或转换历史。

本地处理降低了上传暴露,但不代表数据进入其他上下文后自动安全。复制到 HTML、SQL、命令行或电子表格时,仍需使用目标环境的转义和校验规则。处理敏感数据时还应考虑浏览器扩展、录屏、剪贴板管理器和系统日志。

  • 分享截图前删除 Token、密码和个人信息。
  • 格式化不会净化 HTML,也不会自动阻止原型污染字段。
  • 把对象结构作为安全边界时,应使用专门 Schema 校验。

与相关工具的区别

JSON 与 YAML 转换器会改变序列化格式,并限制 YAML 类型;本工具始终停留在 JSON。JSON 与 CSV 转换器要求对象数组并需要定义表头、空值和嵌套值策略。Base64 只是改变字节表示,哈希则生成不可读的单向摘要。

问题仅是 JSON 可读性或语法时选择本页;需要字段约束时选择 JSON Schema;需要比较两个文档时选择 diff;处理数 GB 文件时选择流式命令行工具。明确工具边界,可以避免把“格式化成功”误认为整个数据契约都正确。

常见问题

JSON 字符串中的 JavaScript 会被执行吗?

不会。实现只调用浏览器 JSON 解析和序列化 API。alert(1)、HTML 标签或 Shell 命令都只是字符串,不会进入 eval、new Function 或其他代码执行接口。

为什么有效的大整数在格式化后会变化?

浏览器使用 IEEE 754 双精度数解析 JSON 数字。超出安全整数范围后可能舍入,因此重新序列化会出现不同数字。工具会告警;需要精确保存的标识符应使用字符串或双方约定的任意精度方案。

可以校验 JSON Schema 吗?

不可以。本页只检查 JSON 语法,不检查必填属性、枚举、format、数值范围或字段关系。语法正确后仍需使用专门的 JSON Schema 校验器。

为什么错误位置有时在真正问题之后?

解析器报告的是无法继续的位置。缺少引号或逗号可能到下一个标记才暴露。先检查报告位置前后的字符,修复最早问题后再次运行。

压缩 JSON 是否等同于网络压缩?

不是。压缩只删除空白,gzip 或 Brotli 对重复 JSON 通常节省更多。压缩也不会加密或隐藏字段和值。

粘贴的 JSON 会被保存吗?

本实现只在当前标签页处理,不主动写入本地存储或发往服务器。但浏览器扩展、剪贴板历史、录屏和设备监控不受页面控制。

相关开发工具

查看全部工具

Cookie 偏好设置

管理你的 Cookie 偏好。必要 Cookie 无法关闭。

必要 Cookie

必要

用于语言选择、隐私选择和网站基础功能,属于必需项。

Cookie: NEXT_LOCALE

分析 Cookie

可选的分析 Cookie 可帮助我们了解访问情况并改进网站。

Cookie: _ga, _gid, _gat, _clck, _clsk

广告 Cookie

可选的广告 Cookie 可能用于展示相关广告并衡量广告效果。

Cookie: __gads, _gcl_au, IDE