JSON 按 Key 排序

本地处理
app.sort.view

也可通过 #data={"name":"Ada"}#url=... 灌入数据,读完即从地址栏清除。

使用说明

按字段名对对象的 Key 排序,让两次导出的 JSON 更容易对比。很多序列化实现不保证 Key 顺序,排序后再 Diff 会干净很多。也可以把排序结果提交进 Git,减少无意义的键顺序抖动。

递归排序

嵌套对象里的键也会按名字排。深层配置一次处理完,不必分层手工整理。

排序规则按键名字典序,便于跨语言、跨工具得到稳定输出。

数组元素不重排

列表顺序通常有业务含义,默认保持原顺序。时间线、步骤、排行榜这类数组不会被按值排序。

只想规范化对象键、不想动列表时,用本页比在格式化里顺手勾选更明确。

和 Diff 一起用

先排序再对比,可减少「其实只是键顺序不同」的噪音。两边都排序后再贴进 Diff 页。

格式化页也有「排序 Key」选项,效果类似,本页专注这一件事。

示例

排序前
{
  "z": 1,
  "a": { "n": 2, "m": 1 },
  "m": 3
}
排序后
{
  "a": {
    "m": 1,
    "n": 2
  },
  "m": 3,
  "z": 1
}
字符串会按字典序排吗?

对象的键按名字排序;字符串值不会被排序。

稳定吗?

同一份输入多次排序应得到相同键顺序,便于放进 Git。

会改数组顺序吗?

不会重排数组元素。只有对象的键会被排序。

中文键名怎么排?

按 JavaScript 默认字符串比较。中英文混用时顺序可能和拼音习惯不完全一致,团队内统一即可。

推荐工作流

  1. 把两份「内容相同但键顺序乱」的 JSON 分别贴进来排序。
  2. 复制结果,再拿到 Diff 页对比。
  3. 若要入库或做快照测试,把排序后的版本当作规范输出。
  4. 业务数组有顺序含义时,不要改用会打乱列表的其它脚本。

排序只服务「对象键规范化」,不是通用的数据清洗。去空值和脱敏请用清理页。