Сортировка JSON по ключам

Локальная обработка
app.sort.view

Данные также можно передать через #data={"name":"Ada"} или #url=... После чтения параметры сразу удаляются из адресной строки.

Отсортируйте ключи объекта по имени полей, чтобы два экспорта JSON было проще сравнить. Многие сериализаторы не гарантируют порядок ключей: после сортировки Diff гораздо чище. Отсортированный результат можно коммитить в Git — меньше бесполезного «дрожания» порядка ключей.

Рекурсивная сортировка

Ключи вложенных объектов тоже сортируются по имени. Глубокий конфиг обрабатывается за один раз, без ручной правки по уровням.

Правило — словарный порядок имён ключей, чтобы вывод был стабильным в разных языках и инструментах.

Элементы массива не переставляются

Порядок списка обычно имеет смысл, по умолчанию он сохраняется. Таймлайн, шаги и рейтинги не сортируются по значению.

Если нужно только нормализовать ключи объектов и не трогать списки, эта страница явнее, чем случайный флажок в форматировании.

Вместе с Diff

Сначала сортировка, затем сравнение — меньше шума «просто другой порядок ключей». Отсортируйте обе стороны и вставьте на страницу Diff.

На странице форматирования тоже есть «Сортировка ключей»; эффект похож, здесь это единственная задача.

Пример

До сортировки
{
  "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. Для сохранения или snapshot-тестов считайте отсортированную версию каноническим выводом.
  4. Если у бизнес-массива важен порядок, не используйте скрипты, которые его перемешивают.

Сортировка только нормализует ключи объектов, это не универсальная очистка данных. Пустые значения и маскирование — на странице очистки.