JSON键排序
按字母重排JSON的键并整理
这个工具能做什么
JSON 键排序做的事情很具体:把你粘进来的 JSON 解析成对象后,将每个对象的键名按字母顺序重新排列,再以两个空格缩进格式化输出。它默认递归处理所有嵌套层级——顶层对象、嵌套对象、以及数组里包含的对象都会被排序;数组本身的元素顺序保持原样不动,因为数组是有序结构,打乱顺序会改变语义。它解决的痛点很直接:同一份数据,不同的序列化库、不同的手写习惯会让键的排列千差万别,两份内容完全等价的 JSON 直接做文本 diff 会满屏飘红,根本看不出到底改了什么。把两份都做一次 json 键排序,键的位置就对齐了,真正的差异才会显出来。
工作方式是先用标准 JSON 解析把字符串变成内存里的对象树,然后深度优先遍历这棵树:遇到普通对象就取出它的所有键,做一次字典序排序,再按新顺序重建对象;遇到数组则保留下标顺序,但对每个元素继续递归下去,所以数组内的对象也会被一并整理。这里的排序是按字符的 Unicode 码位比较的,属于纯字典序而非「自然顺序」,这带来一个需要注意的细节:大写字母(A–Z,码位 65–90)排在小写字母(a–z,97–122)之前,所以 Name 会排在 age 前面,数字字符也排在字母之前。最后用两空格缩进重新序列化,得到的就是键顺序规范、层级清晰的 json 整理结果。整个解析、排序、格式化都在浏览器本地完成,不上传数据。
最典型的用法是做结构比对。比如你怀疑测试环境和生产环境的某个接口返回不一致,两边各抓一份响应,分别做一次 json 字段排序,再丢进任意文本对比工具,字段顺序被拉平之后,多出的字段、变化的取值一目了然,不会再被键顺序的差异干扰。另一个常见场景是整理配置文件或 mock 数据:手写或多人协作攒出来的 config.json、fixture 文件往往键名东一个西一个,排一遍序之后同类字段位置固定,阅读和后续维护都更省心;配合版本控制,键顺序稳定还能显著减少无意义的 diff 噪音,让 code review 只聚焦在真正的改动上。
有几个边界情况值得留意。首先这个工具只处理合法 JSON,带注释、尾逗号、单引号的「类 JSON」会解析失败,需要先修成标准格式。其次前面提到的排序是区分大小写的字典序,如果你期望的是「忽略大小写」或「AaBb 交错」的排列,结果会和直觉不同;纯数字形式的键(如 "10"、"2")由于运行环境对整数型键的特殊处理,可能按数值而非字符顺序呈现,这不是排序失效而是 JSON 对象键的固有特性。另外,输入里若存在重复键,解析阶段只会保留最后一个,这是 JSON 解析的标准行为而非本工具删改。它和「JSON 格式化/美化」工具的区别在于:后者只调整缩进不动键的位置,而 json 排序会真正改变键的先后顺序,两者可以配合使用。
JSON键排序是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“json键排序”、“json排序”、“json字段排序”,说的都是这个。
常见使用场景
- 对比两份键顺序不同但结构相同的接口返回
- 排序后做文本 diff 定位真正改动的字段
- 把杂乱的配置文件键名整理得整齐易读
- 提交前统一 JSON 字段顺序减少 diff 噪音
- 规范手写 mock 数据里对象的键排列
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。