JSON 工具怎么选:格式化、JSONPath、Schema 与 Diff 的区别

趁手 · 更新于 · 约 8 分钟阅读

“处理 JSON”可能指五件完全不同的事:让文本更易读、从嵌套数据中取值、验证接口契约、比较两个版本,或生成代码模型。选错工具通常不会立刻报错,却会让你重复复制数据,甚至漏掉类型变化。

先用一份 API 响应说明问题

{"requestId":"r-1024","users":[{"id":9007199254740993,"name":"小趁","roles":["admin"]}],"page":{"size":20,"next":null}}

这份数据是合法 JSON,但一行难读;id 超过 JavaScript 的安全整数范围;调用方还可能只关心管理员姓名,或要求 page.size 必须是正整数。不同问题对应不同工具。

五类工具的分工

目标应该使用输出不负责
阅读、压缩、发现语法错误JSON 格式化缩进文本或压缩文本业务字段是否正确
从嵌套结构查询值JSONPath匹配路径和值修改原始数据
验证接口契约JSON Schema字段级错误列表判断业务流程是否合理
比较两个版本JSON Diff新增、删除、修改项解释改动原因
生成类型定义JSON 转 TypeScript等接口、类或结构体替代人工代码审查

第一步:格式化并确认数字精度

格式化首先确认引号、逗号、括号和转义是否符合 JSON 语法。趁手的格式化器会保留超过安全整数范围的十进制原文,避免 9007199254740993 被普通 JSON.parse 舍入。格式化通过只表示文本符合 JSON 语法,不表示字段完整或类型符合接口约定。

第二步:查询值时选择 JSONPath 或 JSON Pointer

要取得所有用户名称,可用 $.users[*].name;要筛选管理员,可使用带过滤条件的 JSONPath。它适合“一次得到多个匹配结果”。如果你已经知道确定位置,例如 /users/0/name,JSON Pointer更简单。JSON Pointer 由 RFC 6901 定义,JSONPath 的标准语法见 RFC 9535。

第三步:用 Schema 验证接口契约

{
  "type": "object",
  "required": ["users", "page"],
  "properties": {
    "users": {"type": "array"},
    "page": {
      "type": "object",
      "required": ["size"],
      "properties": {"size": {"type": "integer", "minimum": 1}}
    }
  }
}

Schema 可以发现字段缺失、字符串误传成数字、枚举越界等问题。它无法确认“用户是否真的存在”这类需要数据库或远程服务的业务规则。生成 Schema 后仍应结合真实样本和接口文档复核必填项。

第四步:比较版本时先决定数组规则

普通 Diff 按数组位置比较,适合顺序有意义的列表。接口返回顺序不稳定时,位置比较会产生大量假差异;此时可在增强 Diff 中按 id 对齐,并忽略 requestId、updatedAt 等每次变化的字段。忽略规则越多,遗漏真实变化的风险也越高,因此应明确记录规则。

第五步:生成代码后仍要审查类型

样例生成器只能根据当前样本推断类型。样本里的 null 无法告诉工具真实类型;只出现一次的字段也无法证明它必填。Java 的 Long、TypeScript 的 number、Go 的 int64对超大整数的处理不同。涉及雪花 ID 时,前端通常应优先按字符串传输。

推荐的实际工作流

  1. 先格式化并修正语法错误,确认大整数没有丢失。
  2. 用 JSONPath 提取你真正需要观察的字段,减少噪声。
  3. 用 JSON Schema 固化必填项、类型和范围。
  4. 对新旧响应运行 Diff,按业务含义选择数组顺序和忽略字段。
  5. 最后生成代码模型,并由开发者检查可空性、日期和大整数类型。

常见问题

JSON 格式化能检查接口字段类型吗?

只能确认 JSON 语法并改善可读性。字段契约需要 JSON Schema。

JSONPath 和 JSON Pointer 有什么区别?

Pointer 定位确定路径;JSONPath 支持通配符、递归和过滤,可返回多个结果。

比较两个接口响应应该用什么?

使用 JSON Diff;对时间戳或乱序数组,可使用增强 Diff 的忽略字段和按键对齐功能。

规范来源与边界

本站工具在浏览器本地处理粘贴内容,但浏览器扩展、输入法和设备环境仍可能接触输入。生产密钥、完整个人信息和未脱敏业务数据不应粘贴到任何不受控环境。

打开 JSON 格式化工具

继续阅读