Uvlio

Command Palette

Search for a command to run...

返回文章列表
技术文章

JSON 校验与格式化:语法、形状和 Schema 是三件事

JSON 简单到可以肉眼阅读,又严格到少一个逗号就会失败。正因为如此,人们很容易过度信任格式化工具。漂亮缩进的 JSON 仍可能不符合 API、导入任务、webhook 或配置文件要求。格式化、语法校验和 schema 校验回答的是不同问题。
limitcool 维护的 Uvlio 编辑团队2026-05-177 分钟阅读
主题封面开发工具ValidateFormat

JSON 校验与格式化:语法、形状和 Schema 是三件事

解释 JSON formatter 能证明什么、不能证明什么,语法和 schema 有何区别,以及如何安全审查 payload。

文章主题预览
Unexpected token }
line 12, col 4
fix syntax before pretty print
关联工具
JSON 格式化
阅读重点
1理解原理
2检查边界
3使用工具

原创流程图

JSON 校验与格式化:语法、形状和 Schema 是三件事

这张图由 Uvlio 为本文工作流生成,用来说明从输入检查到输出判断的基本路径。
1

理解原理

检查后再进入下一步

2

检查边界

检查后再进入下一步

3

使用工具

检查后再进入下一步

维护与复核
维护者:limitcool。阅读时可重点关注技术原理、处理边界、隐私风险和可验证事实。
JSON 语法有严格规则

JSON 要求属性名加引号、字符串使用双引号、逗号正确、括号平衡,并使用 true、false、null 等合法字面量。语法校验只回答“这段文本能不能被解析成 JSON”,它不证明字段符合目标系统。

格式化改善可读性,不改变含义

格式化工具改变空白和缩进,让结构更容易检查。它不应该改变值。如果格式化后值变了,说明另有问题。格式化适合截图、文档和调试,但不是修复缺失字段、错误类型或业务数据的工具。

Schema 校验检查契约

Schema 可以定义必填字段、类型、字符串格式、数组长度、枚举值和嵌套形状。一个 JSON 语法正确、缩进漂亮,仍可能因为日期格式错误或数字被传成字符串而不符合 schema。真实集成通常需要语法和契约同时检查。

类型在流转中容易丢失

JSON 有字符串、数字、布尔、null、数组和对象,但没有原生日期、二进制或 undefined,也不像数据库那样区分整数和小数。ID、金额、时间戳和空值在多层系统之间传递时尤其需要检查。

重复键是实际风险

原始 JSON 文本里可能出现重复属性名。不同解析器可能保留第一个、最后一个、直接拒绝或按设置处理。格式化工具可能在解析后隐藏问题。在权限、配置和功能开关里,重复键可能让人和软件读到不同值。

日志和示例需要脱敏

生产日志里的 JSON 常包含 token、邮箱、用户 ID、IP、内部 URL 和功能开关。格式化让它更容易读,也更容易泄露。分享前应使用保留类型和结构的占位符替换敏感值。

实用审查顺序

先做语法校验,确认文本能解析;再格式化查看嵌套、数组长度、字段名和可疑值;然后对照 schema 或 API 契约;最后测试一个真实边界:缺失字段、null、非 ASCII、大数字或空数组。

常见问题

应该先校验还是先格式化?

如果 payload 可能损坏,先校验;如果已知能解析,只是为了阅读,可以先格式化。

格式化后的 JSON 仍会被 API 拒绝吗?

会。API 还可能要求 schema、认证、字段名或业务规则。

压缩 JSON 比漂亮 JSON 更不正确吗?

不是。空白通常不改变 JSON 含义,漂亮格式给人看,压缩格式适合传输。

好测试样例应该包含什么?

包含嵌套对象、数组、布尔、null、数字、字符串、非 ASCII 和一个可选字段。

重复 JSON key 为什么危险?

人可能读第一个,解析器可能保留最后一个,配置和权限场景会因此改变行为。