JSON 工作很少只是“把它排版好看”。真实流程还包括判断输入方言、定位语法失败、检查数据结构、比较版本、选择字段,以及在不丢失含义的前提下转换输出。
不同问题需要不同工具。格式化工具判断文本能否解析并提升可读性;Schema 验证检查解析后的数据是否符合契约;修复工具负责规范化宽松或损坏语法;转换、差异对比和 JSONPath 则解决文档周边的其他步骤。
先识别输入格式
严格 JSON 语法范围很窄:字符串和 key 使用双引号,不允许注释和尾逗号,数字格式也有限制。JSONC 为配置文件增加注释,JSON5 允许更多接近 JavaScript 的语法。一个文件看起来像 JSON,也可能需要不同解析器。
格式化与语法验证
格式化会先解析输入,再用统一缩进重新序列化。如果解析失败,错误位置和附近 token 是第一条线索。压缩也会进行同样解析,只是输出更紧凑。两者都不能证明必填字段或业务规则正确。
修复宽松或损坏的输入
复制的对象字面量、模型输出、注释、尾逗号、单引号和未加引号 key,都可能需要修复。应在副本上处理、检查每项改动,并验证最终严格 JSON。自动修复不应悄悄创造缺失的业务值。
使用 JSON Schema 验证结构
JSON Schema 可以描述允许的类型、必填属性、嵌套对象、数组、枚举和多种约束,适用于 API 边界、导入流程、配置检查和测试数据。语法有效的 JSON 仍可能不符合 Schema,因此两类验证应分开。
选择正确的转换工具
当下游系统需要 YAML、XML、CSV、Excel 或 TypeScript 类型时,可以使用转换工具;JSONPath 用于从大型文档选择值;Flatten 把嵌套路径转为 key;结构化 Diff 会比较解析结果,避免 key 顺序和缩进掩盖真实变化。
- 只有记录具备表格形状时才使用 JSON 转 CSV。
- 从有代表性的样本生成 TypeScript 类型,并检查可选和 nullable 字段。
- 重复选取数据时使用 JSONPath,避免手工滚动。
- 对象和数组应使用结构化 Diff,不要只做纯文本比较。
- 任何有损转换前都保留原始文档。
建立可重复的调试顺序
JSON 失败时应分层处理:保留原始输入,确认响应确实是 JSON,识别方言,格式化或修复语法,验证 Schema,检查目标路径,最后再转换或接入系统。这样可以把传输、语法和数据契约问题分开。
总结
JSON 工具箱真正有用的前提,是每个工具职责清晰。格式化处理可读性和语法,修复工具规范化宽松输入,Schema 验证执行契约,转换工具把已验证数据送入下一系统。下方集群指南会深入介绍 JSON 方言、浏览器格式化和常见语法错误。