흔한 API 응답을 보기 좋게 정리하기
{"user":{"id":7,"name":"Maya"},"skills":["HTML","JavaScript"]}{ "user": { "id": 7, "name": "Maya" }, "skills": ["HTML", "JavaScript"]}포맷팅을 거치고 나면 중첩된 user 객체와 skills 배열이 훨씬 한눈에 들어옵니다. 데이터 자체는 똑같고 공백만 달라진 거죠.
실시간 트리 뷰로 JSON을 포맷·검증·탐색하세요.
마지막 업데이트
JSON 포매터(JSON 뷰어, pretty-printer라고도 부릅니다)는 한 줄로 압축되거나 들쭉날쭉한 JSON을 들여쓰기가 잘 된 읽기 좋은 형태로 바꿔주는 도구입니다. API 응답을 들여다볼 때, 설정 파일을 읽을 때, 로그를 디버깅할 때, 테스트 픽스처를 비교할 때, 프런트엔드와 백엔드 사이에 데이터를 옮길 때 등 개발자가 가장 자주 손이 가는 도구 중 하나죠.
JSON은 문법이 꽤 까다롭습니다. 키도 문자열도 반드시 큰따옴표로 감싸야 하고, 콤마는 정확한 자리에 있어야 하며, 열린 {나 [는 반드시 닫혀야 합니다. 포매터는 이런 구조를 한눈에 보이게 만들어 주고, 내장된 검증기는 문법이 깨졌을 때 그 위치를 정확히 알려줍니다.
JSON은 JavaScript Object Notation의 줄임말입니다. 자바스크립트에서 출발하긴 했지만 거의 모든 프로그래밍 언어가 JSON을 기본으로 읽고 쓸 수 있기 때문에, 웹에서 구조화된 데이터를 주고받는 사실상의 표준 포맷이 되었습니다.
{}로, 배열은 순서가 있는 값들을 나열할 때 []로 쓰며, 둘 다 원하는 만큼 깊이 중첩할 수 있습니다.null, 객체, 배열. undefined도 함수도 주석도 없습니다.API 응답이나 로그, 설정 파일에서 JSON을 복사해 왼쪽 입력창에 붙여넣으세요. 압축된 형태든 일부만 정리된 형태든 모두 받아들입니다.
스페이스 2칸이 가장 흔하고, 4칸도 많이 쓰입니다. 진행 중인 프로젝트의 코딩 스타일에 맞춰 고르세요.
JSON이 유효하면 오른쪽에 정리된 결과가 나타납니다. 문제가 있으면 에러 메시지가 파싱이 실패한 줄과 글자 위치를 알려줍니다.
접고 펼 수 있는 트리 뷰를 활용해 깊이 중첩된 객체와 배열을 단계별로 닫아가며 볼 수 있습니다. 처음 보는 API 응답의 구조를 가장 빠르게 파악하는 방법입니다.
정리된 결과를 코드나 문서에 그대로 복사해 쓰거나, 저장이나 네트워크 전송용으로 다시 한 줄로 압축할 수 있습니다.
JSON을 구성하는 모든 요소를 정리했습니다. 이 목록 바깥에 있는 건 유효한 JSON이 아닙니다. 명세: RFC 8259, ECMA-404.
| 토큰 | 의미 | 예시 |
|---|---|---|
{ } | 객체 — 키/값 쌍의 묶음 | {"name": "Maya"} |
[ ] | 배열 — 값들의 순서 있는 목록 | [1, 2, 3] |
"..." | 문자열 — 항상 큰따옴표로 감쌈 | "hello" |
| Number | 정수 또는 실수, 따옴표 없음, 앞에 + 불가 | 42, -3.14 |
true / false | 불리언 값, 반드시 소문자 | true |
null | 비어 있음 / 값 없음을 의미 | null |
: | 키와 값을 구분하는 기호 | "id": 7 |
, | 항목 사이를 구분 — 마지막 뒤에는 절대 안 됨 | [1, 2, 3] |
{"user":{"id":7,"name":"Maya"},"skills":["HTML","JavaScript"]}{ "user": { "id": 7, "name": "Maya" }, "skills": ["HTML", "JavaScript"]}포맷팅을 거치고 나면 중첩된 user 객체와 skills 배열이 훨씬 한눈에 들어옵니다. 데이터 자체는 똑같고 공백만 달라진 거죠.
{ "name": "Coddy", "active": true,}JSON은 마지막 속성 뒤에 콤마가 붙는 것을 허용하지 않습니다. 검증기는 닫는 } 위치를 짚어 주죠. 자바스크립트 객체 문법을 그대로 JSON에 옮길 때 가장 흔하게 나오는 실수입니다.
{ "count": 3, "countText": "3", "enabled": true}3은 숫자, "3"은 문자열, true는 불리언으로 서로 다른 JSON 타입입니다. API 호출이 실패하는 이유가 구조는 맞는데 값의 타입이 어긋나 있는 경우, 의외로 자주 있습니다.
{ "data": { "orders": [ { "id": 101, "items": [{ "sku": "A", "qty": 2 }] }, { "id": 102, "items": [] } ] }}트리 뷰에서 data.orders를 접었다 펴면서 한 단계씩 구조를 들여다볼 수 있습니다. 객체가 들어 있는 배열이 또 중첩되는 패턴은 REST 응답에서 가장 흔한 형태입니다.
undefined는 JSON에서 유효하지 않고, trailing comma도 파싱이 실패합니다.+나 0을 제외한 leading zero가 올 수 없고, 정말 숫자 타입으로 쓰고 싶다면 따옴표로 감싸지 말아야 한다는 점을 잊는 것.null 값은 모두 그대로 유지됩니다. 다시 압축(minify)하면 원래의 네트워크 친화적인 형태가 똑같이 복원됩니다.undefined는 모두 허용되지 않습니다.package.json, tsconfig.json), 패키지 메타데이터, 로그 라인, 브라우저 localStorage, 테스트 픽스처까지 정말 폭넓게 쓰입니다.