如何使用 JSON 格式化工具
粘贴一个完整的 JSON 值,然后选择需要的操作。格式化和压缩都会先严格解析文档,因此不会把错误输入悄悄改写成看似正确的结果;校验只判断语法并保留原始文本。
- 粘贴符合 JSON 语法的对象、数组、字符串、数字、布尔值或 null。
- 选择 2 空格或 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 文件时选择流式命令行工具。明确工具边界,可以避免把“格式化成功”误认为整个数据契约都正确。