JSORT

JSON 键排序

递归排序 JSON 键名

JSON 与数据
🔒 100% 本地运行 — 你的数据不会离开当前页面
由 Evan 维护•最近更新:2026年9月29日
选项模式
JSON 输入

粘贴 JSON 后直接排序,先拿到稳定输出;数组策略和修复对照可在高级模式查看。

排序顺序
🔒 浏览器内本地处理
Sorted JSON
排序后的 JSON 会显示在这里
页面阅读模式

完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。

工具说明

用浏览器 localeCompare 递归排列 JSON 对象键,再按两空格缩进输出。默认保持数组顺序;可选按文本排序标量数组,并单独保护根数组。整数索引键枚举与数字处理仍遵循 JavaScript 规则。适合辅助审阅,不是用于签名的规范 JSON;草稿保存在本地。

生产可用片段

标量数组按文本而非数值排序

text

输入:
{"z":[2,10,1],"a":true}

默认输出(压缩展示):
{"a":true,"z":[2,10,1]}

开启标量数组排序,升序:
{"a":true,"z":[1,10,2]}

保留根数组顺序不会保护嵌套的 z 数组。

失败门诊(高频踩坑)

把排序结果当作签名规范化输入

原因:比较器对文本调用 localeCompare;整数索引键仍按 JavaScript 枚举,数字由 JSON.stringify 重新序列化。这里没有实现规范 JSON 算法。

修复:可用于已知设置下的本地审阅和样例整理;密码学签名必须使用对应协议指定的精确规范化算法。

常见问题

数组顺序一定不变吗?

默认保持。开启“排序标量数组”后,只含 null、字符串、数字或布尔值的数组可以重排。“保留根数组顺序”只保护最外层,嵌套标量数组仍可能排序;含对象或数组的数组保持元素顺序。

数字会按数值大小排序吗?

不会。键名和标量数组值按文本调用 localeCompare,可选升序或降序;JavaScript 序列化时还会把整数索引键按数值顺序枚举。这不是签名用规范 JSON,也不保证不同语言环境的排序一致。

是否只改变键顺序?

输入会重新解析并按两空格缩进序列化,数字格式和精度遵循 JavaScript JSON 处理。点击排序可查看无效 JSON 错误;输入和选项保存在当前浏览器本地。

继续浏览