JSON
JSON Sort Keys
Рекурсивная сортировка ключей объектов в JSON по алфавиту — порядок элементов массивов не меняется, только ключи объектов на каждом уровне вложенности.
JSON не гарантирует порядок ключей объекта, поэтому два семантически одинаковых документа могут выглядеть по-разному просто из-за порядка полей. Инструмент рекурсивно сортирует ключи объектов по алфавиту на каждом уровне вложенности, не меняя порядок элементов массивов.
Как пользоваться
- Вставьте JSON — ключи объектов сортируются по алфавиту сразу, на всех уровнях вложенности.
- Выберите порядок (по возрастанию или убыванию) в зависимости от потребности.
- Порядок элементов в массивах остаётся неизменным — сортируются только ключи объектов, а не значения массивов.
Типичные сценарии
- Приведение JSON к каноническому виду перед сравнением в git diff или текстовым diff-инструментом.
- Нормализация конфигурационного файла для стабильного, предсказуемого вида в репозитории.
- Подготовка JSON перед вычислением хеша содержимого, когда важен детерминированный результат независимо от порядка полей на входе.
Что стоит помнить
Сортировка побайтовая (по кодам Unicode) — все заглавные буквы идут перед строчными независимо от алфавита, в отличие от сортировки с учётом языковых правил.
Сортируются только ключи объектов — порядок элементов массивов имеет смысловое значение в JSON и поэтому не меняется.
Статья об этом инструменте: JSON Sort Keys: зачем сортировать ключи объекта
Часто задаваемые вопросы
Зачем сортировать ключи JSON-объекта по алфавиту?
Сортировка ключей упрощает осмысленное сравнение двух файлов JSON, поскольку порядок ключей иначе зависит от того, как объект был изначально создан, хотя это и не влияет на смысл.
Меняет ли сортировка ключей смысл моего JSON?
Нет. В JSON порядок ключей объекта не имеет семантического значения — сортировка меняет только то, как выглядят данные, а не то, что они представляют.
Отправляет ли этот инструмент мой JSON куда-либо для сортировки?
Нет. Сортировка происходит полностью в вашем браузере — ничего не загружается на сервер.
Сортируются ли ключи рекурсивно на всех уровнях вложенности?
Да, сортировка применяется не только к ключам верхнего уровня, но и к ключам всех вложенных объектов на любой глубине — иначе результат был бы непоследовательным.
Влияет ли язык/локаль на порядок отсортированных ключей?
Побайтовая сортировка (по кодам Unicode) ставит все заглавные буквы перед строчными независимо от алфавита. Это отличается от сортировки с учётом языковых правил, которая упорядочивает буквы «по-человечески» — для большинства технических ключей разница незаметна, но стоит иметь это в виду для нелатинских названий.