JSON포맷팅API개발자데이터
🔧JSON 포맷팅 실전 가이드 — API 개발자 필독
JSON(JavaScript Object Notation)은 오늘날 API 통신의 표준 데이터 형식입니다. 그런데 실제 API 응답이나 로그 파일에서 받는 JSON은 대부분 한 줄로 압축되어 있어 사람이 읽기 매우 어렵습니다. 이 문제를 해결하는 것이 바로 JSON 포맷팅(Pretty Print)입니다.
JSON 포맷팅이란
JSON 포맷팅은 압축된 JSON 문자열에 들여쓰기(indent)와 줄바꿈을 추가해 사람이 읽기 쉬운 형태로 변환하는 작업입니다.
| 구분 | 예시 |
|---|---|
| 포맷팅 전 (Minified) | {"name":"홍길동","age":30,"city":"서울"} |
| 포맷팅 후 (Pretty) | { "name": "홍길동", "age": 30, "city": "서울" } |
JSON 포맷팅이 필요한 상황
- API 응답 디버깅: curl이나 Postman으로 받은 응답을 보기 쉽게 정리
- 로그 분석: 서버 로그에 기록된 JSON 이벤트 데이터 파싱
- 설정 파일 관리: package.json, tsconfig.json 등 구성 파일 편집
- 데이터 검증: 구조가 올바른지 한눈에 확인
- 코드 리뷰: PR에서 JSON 변경사항 검토
JSON 문법 규칙 — 이것만 지키면 됩니다
| 규칙 | 올바른 예 | 잘못된 예 |
|---|---|---|
| 키는 반드시 큰따옴표 | "name": "홍길동" | name: "홍길동" |
| 문자열 값도 큰따옴표 | "city": "서울" | "city": '서울' |
| 마지막 항목에 쉼표 없음 | "age": 30 } | "age": 30, } |
| 주석 사용 불가 | (주석 없음) | // 이름 필드 |
| 불리언은 소문자 | "active": true | "active": True |
JavaScript에서 JSON 포맷팅하기
// 포맷팅 (Pretty Print)
const obj = { name: "홍길동", age: 30 }
const pretty = JSON.stringify(obj, null, 2)
// 파싱 (String → Object)
const str = '{"name":"홍길동","age":30}'
const parsed = JSON.parse(str)
// API 응답 포맷팅
const response = await fetch('/api/users')
const data = await response.json()
console.log(JSON.stringify(data, null, 2))
자주 발생하는 JSON 오류와 해결법
- SyntaxError: Unexpected token — 큰따옴표 대신 작은따옴표 사용하거나 키를 따옴표로 감싸지 않은 경우
- Trailing comma 오류 — 마지막 항목 뒤에 쉼표가 있는 경우 (JS에서는 허용되지만 JSON 표준은 불가)
- undefined 직렬화 오류 — JSON.stringify는 undefined를 처리하지 않아 해당 키가 사라짐
- 순환 참조 오류 — 객체가 자기 자신을 참조하면 JSON.stringify가 실패
자주 묻는 질문
JSON과 JavaScript 객체의 차이는 무엇인가요?
JSON은 문자열 형식의 데이터 표현 방식이고, JavaScript 객체는 메모리 상의 실제 데이터 구조입니다. JSON은 키가 반드시 큰따옴표여야 하지만, JS 객체는 따옴표 없이 키를 쓸 수 있습니다. JSON.stringify로 객체 → 문자열, JSON.parse로 문자열 → 객체 변환이 가능합니다.
JSON 파일의 최대 크기 제한이 있나요?
JSON 자체에는 크기 제한이 없지만, 브라우저나 서버 설정에 따라 파싱 가능한 크기가 달라집니다. Node.js의 경우 일반적으로 수십 MB까지는 문제없이 처리되며, 그 이상은 스트리밍 파싱을 권장합니다.
JSON5나 JSONC는 JSON과 다른가요?
JSON5와 JSONC(JSON with Comments)는 JSON의 확장 형식으로, 주석 추가나 trailing comma 등을 허용합니다. VS Code의 settings.json이 JSONC 형식입니다. 표준 JSON 파서로는 파싱이 안 되므로 전용 라이브러리가 필요합니다.
