JSON Key 排序
JSON Key 排序工具,勾选「key 排序」后执行格式化或压缩,所有对象的键按字典序递归重排,嵌套层级同样生效,输出稳定,便于对比和评审。排序只调整对象键的书写顺序,数组元素顺序、值和类型都不动;配合压缩可以得到确定的输出,做配置基线、快照测试与 Diff 审查时不会被键顺序干扰。计算在浏览器本地的 Web Worker 中完成,数据不上传。
怎么使用
- 1
粘贴或上传 JSON
把需要排序的 JSON 粘贴到输入框,或打开本地文件;工具会先自动校验,非法 JSON 先行报错而不会输出半成品。
- 2
勾选「key 排序」
在工具栏勾上 key 排序,再选择缩进(2 空格 / 4 空格 / Tab);需要单行输出就配合压缩使用。
- 3
执行格式化或压缩
Worker 递归遍历全部对象,键名按字典序重排后输出;数组保持原顺序,深层嵌套对象逐层排齐。
- 4
复制 / 下载 / 做对比
复制结果或下载保存;两份来源不同但数据相同的 JSON 排序后再用 Diff 工具对比,可排除键顺序噪声。
功能特点
递归全量排序
不只排第一层,数组里的对象、对象里的嵌套对象都会逐层按键名排序,整份文档风格统一。
只动键序不动数据
数组元素位置、键对应的值、数字精度与 null 全部保持原样;排序不丢字段、不做类型推断。
确定性输出
相同数据无论原始书写顺序如何,排序 + 压缩后逐字节一致,适合作为快照、缓存键与审计基线。
与 Diff 绝配
两份 JSON 先各自排序再做语义 / 文本对比,可消除键重排造成的大量噪声,让真实改动一目了然。
兼容大整数与大文件
排序时检测超过 2^53-1 的整数并提示无损模式;10MB 文件在 Worker 中完成,主线程不卡顿。
无需登录
打开即用,不用注册,也没有广告。
常见错误与排查
- ! JSON 规范中对象本来就是无序集合,键序不影响程序读取;排序改变的只是文本形态,用于可读性与对比,不影响语义。
- ! 数组不会被排序:数组是有序的,重排会改变数据含义。需要忽略数组顺序比较时请使用 Diff 工具的对应选项。
- ! 键名按 Unicode 码位排序:纯英文即常见 A–Z 字典序;中文 / 混合键名按字符编码位置排列,不同语言间可能与拼音顺序不同。
- ! 数字字符串键(如 "1"、"10"、"2")按文本字典序排列为 1、10、2,而不是数值序,这是键排序的正常表现。
常见问题
JSON Key 排序会改变数据内容吗?
不会。对象键在 JSON 语义中本就无序,排序只调整书写顺序,键与值的对应关系、字段数量、类型全部不变;数组元素顺序也原样保留。排序后的 JSON 与原 JSON 被任意程序解析后得到等价数据。
数组里的元素也会排序吗?
不会,也不应该。对象无序而数组有序,重排数组元素会改变第 N 项的含义。本工具只对对象键排序;如果你想在对比两份数据时忽略数组顺序,可以使用 JSON Diff 工具的「忽略数组顺序」选项。
排序规则是什么?中文键名怎么排?
键名按 Unicode 码位做字典序比较:纯英文 / 数字键即常规 A–Z、0–9 顺序(注意是文本序,"10" 排在 "2" 前);中文等字符按其 Unicode 编码位置排列,与拼音首字母顺序不一定一致。
为什么要给 JSON 的 key 排序?
主要为了稳定与可比:同一数据经不同库、不同人输出时键顺序往往不同,导致文本 Diff 满屏噪声、快照测试频繁失败、缓存命中率下降。排序后输出确定,配合压缩可得到规范形态(canonical JSON),代码评审、配置基线、签名前规范化都常用这一步。
排序时数据会上传吗?免费吗?
排序在浏览器本地完成,数据不离开本机,不用登录,也没有使用次数限制。