~/tools/json/sort-keys

JSON

JSON Sort Keys

Отсортировать ключи JSON по алфавиту рекурсивно.

Как это работает

Два, казалось бы, одинаковых json файла в git diff показывают полную простыню изменений только потому, что кто то переставил поля местами, а данные внутри остались теми же самыми. Json sort keys online приводит ключи любого json объекта к единому алфавитному порядку рекурсивно на всех уровнях вложенности, что делает diff между версиями файла куда чище и понятнее.

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

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

Частые вопросы

Сортируются ли элементы внутри массивов json объектов?

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

Меняются ли сами значения полей при сортировке ключей?

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

Учитывается ли регистр букв при алфавитной сортировке ключей?

Да, сортировка использует стандартное сравнение строк JavaScript, где заглавные буквы идут по своему порядку относительно строчных, для большинства реальных json схем с последовательным стилем именования это редко создает проблемы.

Зачем вообще может понадобиться сортировка ключей json перед коммитом?

Главная причина это чистота git diff, если два человека или два разных генератора кода создают json с одними и теми же данными, но в разном порядке полей, отсортированная версия покажет только реальные изменения данных, а не шум от перестановки полей.