JSON 키 정렬 도구
JSON 문서에 있는 모든 객체의 키를 재귀적으로 알파벳순 정렬합니다 — 비교(diff)를 깔끔하게 만들고 설정 파일을 훑어보기 쉽게 해줍니다.
조회수 919회
작동 방식
JSON을 붙여넣으면 모든 객체의 키가 알파벳순으로 정렬되어 돌아옵니다. 중요한 부분은 이 정렬이 재귀적이라는 점입니다 — 도구는 최상위 객체의 키만 재정렬하고 멈추지 않습니다. 모든 깊이에 있는 모든 중첩 객체 안으로 들어가 각각을 독립적으로 알파벳순 정렬합니다. 가장 바깥쪽 레벨만 정렬한다면 문서의 내부 구조는 그대로 남게 되어, 단순한 평면 객체보다 복잡한 어떤 것에도 목적을 이루지 못합니다. 실제 JSON(API 응답, 설정 파일)은 거의 항상 여러 단계로 중첩되어 있습니다.
예를 들어 {"user":{"zip":"1","name":"A"},"active":true}가 주어지면, 도구는 최상위에서 active를 user 앞으로 옮기는 데 그치지 않습니다 — user 객체 안으로도 들어가 name을 zip 앞으로 바꾸어, {"active":true,"user":{"name":"A","zip":"1"}}를 만들어냅니다. 배열은 그대로 둡니다. 배열 순서는 의미를 가지므로(배열은 정의상 순서가 있습니다) 요소 순서가 정확히 보존되는 반면, JSON 명세상 객체의 키 순서는 의미를 갖지 않습니다.
알아두면 좋은 점
주된 사용 사례는 diff와 버전 관리 비교를 의미 있게 만드는 것입니다. 동일한 데이터를 담고 있지만 키가 다른 순서로 직렬화된 두 JSON 문서를 직접 비교하면, 실제로는 아무것도 바뀌지 않았음에도 모든 줄이 달라 보이는 거대하고 지저분한 텍스트 diff가 나옵니다. 두 문서 모두 이 정렬 도구를 먼저 거치게 하면 이런 잡음이 사라집니다 — 키가 동일한 알파벳순으로 정렬되므로, 일반 텍스트 diff는 우연한 재정렬이 아니라 실제 내용 변경만 보여줍니다. 설정 파일을 손으로 편집하거나 낯선 API 응답을 훑어보기 쉽게 만드는 데도 똑같이 유용합니다.
자주 묻는 질문
이건 데이터를 바꾸나요, 순서만 바꾸나요?
키 순서만 바뀝니다 — 값, 중첩 구조, 배열 내용은 그대로 유지됩니다. JSON 객체는 사양상 순서가 없으므로, 이는 항상 안전하며 아무것도 깨뜨리지 않는 변환입니다.
정렬은 중첩된 객체에도 적용되나요, 아니면 최상위 레벨만인가요?
완전히 재귀적입니다 — 가장 바깥쪽 객체뿐 아니라 모든 중첩 깊이에 있는 모든 객체가 각각 독립적으로 알파벳순 정렬됩니다. 최상위 레벨만 정렬한다면 내부 객체들은 원래의, 어쩌면 일관성 없는 순서 그대로 남게 될 것입니다.
제 JSON이 유효하지 않으면 어떻게 되나요?
조용히 실패하는 대신 명확한 파싱 오류가 표시됩니다 — 안내된 구문 문제를 고치고 다시 시도하세요.
배열도 정렬하나요?
아니요 — 배열은 정의상 순서가 있고 재정렬하면 의미가 바뀌므로 배열 요소의 순서는 그대로 정확히 보존됩니다. 정렬되는 것은 객체의 키뿐입니다.
두 파일을 비교하기 전에 JSON 키를 정렬해야 하는 이유는 무엇인가요?
일반 텍스트 diff 도구는 줄 단위로 비교하므로, 동일한 데이터를 담고 있지만 키 순서만 다른 두 JSON 파일은 실제로는 의미 있는 변경이 전혀 없어도 diff에서 거의 완전히 달라 보입니다. 두 파일의 키를 같은 방식으로 정렬하면 이런 잡음이 사라지고, 실제 내용 변경만 반영하는 diff가 남습니다.
비슷한 도구
문제 신고하기
JSON 키 정렬 도구
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!