← 返回博客
工具使用指南

JSON 格式化、校验与键排序有什么区别

用可复现的小示例说明 JSON 语法、格式化、压缩、键排序,以及类型和精度问题。

先让输入成为合法 JSON

JSON 对象键名和字符串必须使用双引号,布尔值使用 true/false,空值使用 null。不能把 JavaScript 对象字面量直接当作 JSON;注释、单引号和尾随逗号都可能导致解析失败。

遇到错误时先检查提示附近的引号、逗号和括号。把大型输入缩小到一个对象或数组,定位问题后再恢复完整数据。

格式化和压缩都不改变业务含义

格式化增加缩进和换行,方便阅读;压缩删除不必要的空白,方便传输。两者不是数据清洗,不会自动删除敏感字段,也不会证明接口返回值正确。

下面对象在两种排版中具有相同的数据含义。使用两空格缩进可以快速确认嵌套结构,复制结果后仍应检查业务字段。

{"b":2,"a":1}

{
  "b": 2,
  "a": 1
}

键排序不等于数组排序

开启递归键排序后,对象键会调整顺序,便于比较配置;数组中的元素仍按原顺序保留。不要用键排序给商品、记录或日期数组排序。

例如 {"b":2,"a":1} 可输出为 {"a":1,"b":2},但 [2,1] 仍是 [2,1]。依赖键顺序的外部系统应单独验证兼容性。

语法正确之后还要检查类型

"18" 是字符串,18 是数值。普通语法校验不会检查 age 是否必填或是否必须为整数;这类业务约束应交给 JSON Schema 校验器。

解析器使用 JavaScript 数值,超过安全整数范围的标识符可能失去精度。长订单号或数据库 ID 通常应按接口约定作为字符串保存;原始字节或字段顺序有意义时保留原文。

← 返回博客