JSON
JSON Sort Keys
Рекурсивне сортування ключів об’єктів у JSON за алфавітом — порядок елементів масивів не змінюється, лише ключі об’єктів на кожному рівні вкладеності.
JSON не гарантує порядок ключів об’єкта, тому два семантично однакові документи можуть виглядати по-різному просто через порядок полів. Інструмент рекурсивно сортує ключі об’єктів за алфавітом на кожному рівні вкладеності, не змінюючи порядок елементів масивів.
Як користуватися
- Вставте JSON — ключі об’єктів сортуються за алфавітом одразу, на всіх рівнях вкладеності.
- Оберіть порядок (за зростанням чи спаданням) відповідно до потреби.
- Порядок елементів у масивах лишається незмінним — сортуються лише ключі об’єктів, а не значення масивів.
Типові сценарії
- Приведення JSON до канонічного вигляду перед порівнянням у git diff чи текстовим diff-інструментом.
- Нормалізація конфігураційного файлу для стабільного, передбачуваного вигляду в репозиторії.
- Підготовка JSON перед обчисленням хешу вмісту, коли важливий детермінований результат незалежно від порядку полів на вході.
Що варто памʼятати
Сортування побайтове (за кодами Unicode) — усі великі літери йдуть перед малими незалежно від алфавіту, на відміну від сортування з урахуванням мовних правил.
Сортуються лише ключі об’єктів — порядок елементів масивів має семантичне значення в JSON і тому не змінюється.
Стаття про цей інструмент: JSON Sort Keys: навіщо сортувати ключі об’єкта
Часті запитання
Навіщо сортувати ключі JSON?
Відсортовані ключі спрощують порівняння двох версій JSON (diff-и стають чистішими) і роблять структуру передбачуванішою при перегляді конфігураційних файлів чи відповідей API.
Чи зміниться порядок елементів у масивах?
Ні. Сортуються лише ключі об’єктів на кожному рівні вкладеності — порядок елементів масивів залишається таким, яким був у вхідних даних, оскільки масиви впорядковані за позицією, а не за ключами.
Чи обробляються дані на сервері?
Ні, сортування виконується повністю у браузері на JavaScript, без надсилання даних кудись іще.
Чи сортуються ключі рекурсивно на всіх рівнях вкладеності?
Так, сортування застосовується не лише до ключів верхнього рівня, а й до ключів усіх вкладених об’єктів на будь-якій глибині — інакше результат був би непослідовним.
Чи впливає мова/локаль на порядок відсортованих ключів?
Побайтове сортування (за кодами Unicode) ставить усі великі літери перед малими незалежно від алфавіту. Це відрізняється від сортування з урахуванням мовних правил, яке впорядковує літери "по-людськи" — для більшості технічних ключів різниця непомітна, але варто це мати на увазі для нелатинських назв.