도구

데이터 도구

JSON 포매터

JSON을 붙여넣으면 포맷, 압축, 검증하거나 객체 키를 정렬할 수 있어요. 파싱은 브라우저에 내장된 JSON 기능으로 페이지 안에서만 이루어져요.

입력

JSON 원본

결과

처리된 JSON

정리 예시

`{"ok":true,"items":[1,2]}`처럼 압축된 응답을 붙여넣고 포맷을 누르면 배열 순서는 그대로 두고 두 칸 들여쓰기로 펼쳐요. 압축은 불필요한 공백을 지워 환경 변수나 작은 요청 샘플에 쓰기 좋은 한 줄로 만들어요. 두 모드 모두 값을 다시 직렬화하므로 원본의 꾸밈용 공백은 바뀌어요.

무엇을 검사하나요

브라우저의 `JSON.parse`를 사용하므로 작은따옴표로 감싼 키, 주석, 후행 쉼표, 빠진 쉼표, 이스케이프되지 않은 제어 문자를 올바르지 않은 JSON으로 판단해요. 오류가 나면 일부만 고친 데이터를 내보내지 않고 결과를 비워 둬요. 구문만 검사하며 필수 필드, 값 타입, 애플리케이션 스키마는 검증하지 않아요.

개인정보

파싱, 포맷, 키 정렬은 이 브라우저 탭 안에서 실행돼요. 이 도구는 JSON을 업로드·저장하거나 서버로 보내지 않아요. 기본 예시는 페이지에 포함된 값이고, 바꿔 넣은 내용은 직접 복사하거나 다른 제품에 붙여넣기 전까지 로컬에만 남아요.

언제 정렬하나요

키 정렬은 모든 중첩 객체의 키를 알파벳순으로 바꾸지만 배열 항목의 순서는 유지해요. 스냅샷이나 수동 비교에는 편리하지만 원본 객체의 표시 순서는 달라지고 스키마 기준으로 정렬하는 기능은 아니에요. 문서 검토에서 원래 순서가 중요하다면 일반 포맷을 사용해 주세요.

이 도구는 붙여 넣은 JSON을 포맷(들여쓰기), 압축(minify), 키 알파벳 정렬 세 모드로 다시 씁니다. 내부적으로 브라우저 JSON.parse로 검증한 뒤 JSON.stringify로 직렬화하며, 들여쓰기는 스페이스 2칸입니다. 민감한 운영 비밀을 붙여 넣지 마세요.

모드별 결과(검증됨)

입력 {"z":1,"a":[3,1],"m":"한글"} 기준입니다.

모드 결과
포맷 키 순서 z→a→m 유지, 배열 [3,1] 유지, 여러 줄
압축 {"z":1,"a":[3,1],"m":"한글"} 한 줄
정렬 키 a→m→z, 배열 값 순서는 그대로 [3,1]

정렬은 객체의 키만 바꿉니다. 중첩 객체도 모든 깊이에서 키가 정렬되지만, 배열 원소를 크기순으로 재배치하지는 않습니다. 이벤트 로그처럼 순서가 의미인 배열을 안전하게 다룰 수 있습니다.

워크플로 예시

  1. API 응답을 붙여 넣는다.
  2. 먼저 포맷으로 구조를 읽는다.
  3. 문법 오류가 나면 상태 메시지의 위치 주변을 고친다. 마지막 쉼표·작은따옴표·주석이 흔한 원인이다.
  4. 두 설정을 diff할 때는 양쪽에 정렬을 적용한 뒤 비교한다.
  5. 전송·저장 직전에만 압축한다.

오류 위치가 “감지된 지점”이지 “고칠 지점”이 아닐 수 있습니다. 닫는 괄호가 빠지면 파일 끝에서 오류가 납니다. 사례는 JSON 문법 가이드에 있습니다.

한계와 숫자 정밀도

  • JSON5·주석·트레일링 쉼표는 허용되지 않습니다.
  • JavaScript 숫자는 대략 ±2^53−1 밖의 정수를 안전하게 표현하지 못합니다. 주문번호·64비트 ID는 문자열로 두세요.
  • 중복 키는 만들지 마세요. 동작은 엔진마다 다를 수 있습니다.
  • 스키마 검증·파일 업로드는 없습니다.

CSV·YAML과 번갈아 볼 때는 데이터 워크벤치에서 모드만 바꾸면 됩니다.

입력 전에 확인할 체크리스트

  1. 최상위가 객체·배열·문자열·숫자·불리언·null 중 무엇인지 확인합니다. RFC 8259는 모두 허용하지만, 오래된 파서는 객체·배열만 받습니다.
  2. 키와 문자열은 큰따옴표만 씁니다. JavaScript 객체 리터럴을 그대로 붙여 넣으면 실패합니다.
  3. 숫자 끝의 불필요한 0, NaN, Infinity는 JSON에 없습니다.
  4. 주석과 트레일링 쉼표를 제거합니다.
  5. 윈도 경로는 역슬래시를 \로 이스케이프합니다.

통과한 뒤에만 포맷·정렬·압축을 적용하세요. 잘못된 입력을 압축해도 고쳐지지 않습니다.

정렬을 쓰는 구체적 상황

두 환경의 설정 JSON을 비교할 때 키 순서가 생성 시점마다 달라지면 diff가 온통 빨간 줄이 됩니다. 양쪽에 정렬 모드를 적용하면 의미 있는 차이만 남습니다. 다만 배열 순서가 비즈니스 의미(우선순위 목록)라면 정렬 모드가 배열을 건드리지 않는 점이 중요합니다. 배열 안 객체의 키만 정렬되고, 배열 자체 순서는 유지됩니다.

API 문서에 예시 응답을 고정해 둘 때도 정렬된 형태가 리뷰어에게 읽기 쉽습니다. 팀 규칙으로 “문서용 JSON은 정렬 후 붙여 넣기”를 정해 두면 예시가 들쭉날쭉해지지 않습니다.

압축 모드와 전송

공백·줄바꿈을 제거한 minify 결과는 네트워크 전송이나 localStorage 용량을 아끼는 데 유리합니다. 사람이 읽는 로그에는 포맷 모드를 유지하세요. 압축된 한 줄을 다시 붙여 넣어 포맷하면 원래 가독성을 회복할 수 있습니다. 키 순서까지 흐트러진 경우에는 정렬을 한 번 더 적용합니다.

FAQ

포맷과 정렬의 차이가 뭔가요?

포맷은 들여쓰기만 정리하고 키 순서는 입력 그대로입니다. 정렬은 객체 키를 알파벳순으로 재귀적으로 바꾼 뒤 들여쓰기를 적용합니다. 배열 원소의 순서는 바뀌지 않습니다.

마지막 쉼표가 있으면 어떻게 되나요?

브라우저의 JSON.parse가 문법 오류를 냅니다. 포매터는 그 메시지를 상태에 보여 주고 출력란을 비웁니다.

입력한 JSON이 서버로 가나요?

아니요. 파싱과 직렬화는 이 브라우저 탭 안에서만 이뤄집니다.

한글이 \uXXXX로 바뀌나요?

아니요. JSON.stringify는 한글을 그대로 출력합니다.