JSON 정렬

JSON 객체의 키 순서와 배열 요소를 정리해 읽기 쉽고 비교하기 쉬운 구조로 맞춰 줍니다. 모든 처리는 브라우저 안에서 끝납니다.

관련 추천

JSON 정렬이란 무엇인가요?

JSON 정렬은 JSON 객체의 키를 일정한 규칙으로 다시 배치하거나 배열 요소를 값 순서대로 정리하는 작업입니다. 값이나 타입은 바꾸지 않고 표시 순서만 통일합니다.

이 작업은 Git Diff 노이즈 감소, 설정 파일 표준화, JSON Diff 전처리, API 응답 캐시 키 안정화에 유용합니다. 같은 데이터라도 키 순서만 다르면 생기는 불필요한 차이를 줄일 수 있습니다.

GeekFormat JSON 정렬 도구는 키 정렬과 배열 정렬 두 가지 모드, 재귀 옵션, 오름차순/내림차순 전환을 제공합니다. 모든 작업은 로컬 브라우저에서 처리되므로 민감한 JSON도 안전하게 다룰 수 있습니다.

사용 사례

  • package.json, tsconfig.json 같은 파일의 키 순서를 통일해 Git Diff를 줄이기
  • 두 JSON을 비교하기 전에 먼저 정렬해서 순서 차이만으로 생기는 가짜 diff 줄이기
  • API 응답 키 순서를 안정화해 캐시 키나 해시 계산을 일정하게 유지하기
  • 설정 파일과 Feature Flag 데이터를 규칙적인 순서로 저장해 리뷰하기 쉽게 만들기
  • 큰 JSON을 알파벳 순으로 정리해 사람이 읽고 검토하기 쉽게 만들기

이용 방법

  1. 왼쪽 입력창에 JSON을 붙여넣거나 예제를 불러오거나 .json 파일을 업로드합니다
  2. 키 정렬 또는 배열 정렬 모드를 선택하고 오름차순/내림차순, 재귀 옵션을 설정합니다
  3. 정렬 버튼을 눌러 오른쪽 결과를 확인합니다
  4. 필요하면 결과를 복사하거나 sorted.json 파일로 다운로드합니다

주요 기능

  • 두 가지 모드: 객체 키 정렬과 배열 요소 정렬을 한 번에 지원합니다
  • 재귀 정렬: 중첩 객체 내부까지 자동으로 정렬해 구조를 통일합니다
  • 오름차순/내림차순: A-Z, Z-A 또는 값의 크기 순서를 바로 바꿀 수 있습니다
  • 데이터 구조 유지: 값과 타입은 그대로 두고 순서만 정리합니다
  • 로컬 처리 보안: JSON은 서버로 전송되지 않고 브라우저 안에서만 처리됩니다
  • 후속 작업 연계: 정렬 결과를 JSON Diff, Repair, Format 도구로 바로 넘길 수 있습니다

코드 예제

JavaScript로 객체 키를 재귀 정렬하기

javascript
// 키 이름을 재귀적으로 정렬한 새 객체를 반환
function sortKeysDeep(value) {
  if (Array.isArray(value)) return value.map(sortKeysDeep);
  if (value !== null && typeof value === 'object') {
    return Object.keys(value)
      .sort((a, b) => a.localeCompare(b))
      .reduce((acc, k) => {
        acc[k] = sortKeysDeep(value[k]);
        return acc;
      }, {});
  }
  return value;
}

const data = { zoo: { animals: ['zebra', 'elephant'] }, alpha: 1, beta: 2 };
console.log(JSON.stringify(sortKeysDeep(data), null, 2));

Python에서 sort_keys=True 사용하기

python
import json

data = {"zoo": {"animals": ["zebra", "elephant"]}, "alpha": 1, "beta": 2}

print(json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False))

arr = [3, 1, 4, 1, 5]
print(sorted(arr))
print(sorted(arr, reverse=True))

jq로 JSON 키와 배열 정렬하기

bash
# 키를 재귀적으로 정렬
jq -S '.' data.json

# 배열 요소 정렬
jq 'sort' data.json

# 특정 필드 기준 정렬
jq 'sort_by(.age)' data.json

자주 묻는 질문

JSON 정렬과 JSON 포맷팅은 무엇이 다른가요?

JSON 포맷팅은 들여쓰기와 줄바꿈만 정리하고, JSON 정렬은 키나 배열 요소의 순서를 다시 배치합니다. 둘을 함께 쓰면 구조와 가독성을 동시에 맞출 수 있습니다.

정렬하면 JSON 크기가 커지나요?

대부분 거의 변하지 않습니다. 키 순서만 바뀌며 값의 개수나 문자열 내용은 그대로 유지됩니다.

값이나 타입이 바뀌기도 하나요?

바뀌지 않습니다. `null`, 불리언, 숫자, 문자열, 객체, 배열의 실제 값은 그대로 남고 순서만 달라집니다.

재귀 정렬은 무엇을 의미하나요?

가장 바깥 객체만이 아니라 안쪽에 중첩된 객체 계층에도 같은 정렬 규칙을 적용하는 것입니다. 설정 파일이나 API 응답 표준화에서는 보통 켜 두는 편이 좋습니다.

정수처럼 보이는 키가 앞에 오는 이유는 무엇인가요?

JavaScript는 `0`, `1`, `2` 같은 키를 숫자 순서로 다루기 때문입니다. 이는 언어 사양에 따른 동작이며 이 도구도 그 특성을 유지합니다.

배열 안의 객체는 어떻게 정렬되나요?

배열 모드에서는 요소를 문자열 표현 기준으로 비교합니다. 특정 필드 기준 정렬이 필요하다면 `sort_by` 나 `Array.sort()` 같은 코드 기반 방법이 더 적합합니다.

JSON이 서버로 업로드되나요?

아니요. 파싱, 정렬, 포맷팅은 모두 브라우저 안에서 처리되므로 민감한 데이터도 비교적 안심하고 사용할 수 있습니다.

JSON Diff나 Schema 검증과 함께 쓸 때 순서는 어떻게 되나요?

보통 JSON Repair → JSON 정렬 → JSON Diff / JSON Format → Schema 검증 순서가 편합니다. 먼저 순서를 맞추면 diff 노이즈를 줄일 수 있습니다.

문제 해결

Invalid JSON 오류가 표시됩니다

입력 JSON에 문법 오류가 있을 수 있습니다. 먼저 JSON Repair 또는 JSON Format 도구에서 문법을 확인해 주세요.

정수처럼 보이는 키가 맨 앞에 옵니다

JavaScript 사양상 정수형처럼 보이는 키는 숫자 순서로 처리됩니다. 문자열처럼 다루려면 키 설계를 바꾸는 것이 좋습니다.

배열 안 객체가 원하는 순서대로 정렬되지 않습니다

배열 모드는 일반 비교 기준을 사용하므로 특정 필드 정렬과는 다를 수 있습니다. `sort_by(.field)` 나 사용자 정의 비교 함수를 써 주세요.

안쪽 객체는 정렬되지 않습니다

재귀 옵션이 꺼져 있을 수 있습니다. 재귀를 켜고 다시 실행하면 내부 객체까지 정렬됩니다.

큰 JSON에서 처리 속도가 느립니다

아주 큰 JSON은 브라우저 메모리를 많이 사용합니다. `jq`나 Python 스크립트로 미리 정리한 뒤 이 도구로 최종 확인하는 방법이 안정적입니다.

용어집

JSON Sort
JSON의 키나 배열 요소 순서만 다시 정렬하는 작업입니다. 값과 타입은 변경하지 않습니다.
Recursive Sort
중첩된 객체의 내부 계층까지 재귀적으로 정렬하는 방식입니다.
Ascending / Descending
오름차순은 A-Z 또는 작은 값에서 큰 값, 내림차순은 그 반대 순서입니다.
Canonical Form
비교, 캐시, 해시 계산에 유리하도록 정규화한 일관된 JSON 표현입니다.
Git Diff Noise
실제 내용이 아니라 순서나 형식 차이 때문에 생기는 불필요한 diff입니다.
localeCompare
JavaScript 문자열 비교 API로, 이 도구에서는 키 이름 정렬 비교에 해당합니다.

JSON 정렬이 유용한 대표 시나리오

상황정렬 기준추천 방식도구
Git Diff 노이즈 줄이기객체 키재귀 키 정렬이 도구 / jq -S
설정 파일 표준화객체 키오름차순 + 재귀이 도구
API 캐시 키 안정화객체 키정렬 후 stringify이 도구 / 코드 예제
배열 데이터 간단 정리배열 요소배열 모드이 도구

JSON 정렬과 관련 도구 비교

도구목적정렬 대상함께 쓰는 작업
JSON 정렬순서 통일키 / 배열 요소JSON Diff, 포맷팅
JSON Diff차이 비교없음사전 정렬
JSON Merge여러 JSON 병합병합 후 필요 시 정렬병합 후 정렬
JSON Repair잘못된 JSON 복구없음복구 후 정렬

Authoritative References