입력0 lines
1
결과0 lines
1

JSON의 문법, 포맷 비교, 파싱 오류 해결법을 더 깊이 알고 싶다면 JSON 데이터 다루기 완벽 가이드를 참고하세요.

JSON 포맷터란?

JSON(JavaScript Object Notation)은 데이터를 저장하고 전송하기 위한 경량 텍스트 형식입니다. 2001년 Douglas Crockford가 제안하고, 이후 ECMA-404와 RFC 8259로 국제 표준화되었습니다. 사람이 읽기 쉽고 기계가 파싱하기 쉬운 구조로, REST API 응답, 설정 파일, 데이터베이스 문서, 메시지 큐 페이로드 등 웹 개발 전반에서 사실상의 표준 데이터 교환 포맷으로 사용됩니다.

JSON 포맷터는 압축되거나 정렬되지 않은 JSON 데이터를 들여쓰기와 줄바꿈을 적용하여 가독성 높은 형태로 변환하는 도구입니다. API에서 받은 응답이 한 줄로 압축되어 있거나, 설정 파일의 구조를 파악하기 어려울 때 유용합니다. 반대로 Minify 기능은 공백과 줄바꿈을 제거하여 데이터 전송 크기를 최소화하며, 네트워크 대역폭 절감과 응답 속도 향상에 기여합니다.

이 도구는 브라우저 내장 JSON.parse()JSON.stringify() 메서드를 사용합니다. 입력된 데이터는 서버로 전송되지 않으며, 페이지를 닫으면 메모리에서 완전히 제거됩니다. 인증 토큰, API 키, 개인정보가 포함된 JSON도 안전하게 검증하고 정렬할 수 있습니다.

사용 방법

  1. 왼쪽 입력 영역에 JSON 데이터를 붙여넣습니다.
  2. 입력 즉시 JSON 문법이 자동으로 검증되며, 유효 여부가 상단에 표시됩니다.
  3. 정렬(Beautify) 버튼을 클릭하면 2칸 들여쓰기가 적용된 결과가 오른쪽에 출력됩니다.
  4. 압축(Minify) 버튼을 클릭하면 공백이 제거된 한 줄 JSON이 출력됩니다.
  5. 결과 복사 버튼으로 출력된 JSON을 클립보드에 복사할 수 있습니다.

실무 활용 사례

JSON 포맷터는 개발 워크플로의 다양한 단계에서 활용됩니다. 아래는 실제 현장에서 자주 발생하는 사용 시나리오입니다.

API 디버깅 — REST API나 GraphQL 응답을 브라우저 개발자 도구에서 복사하면 대부분 공백 없이 압축된 형태입니다. 이를 정렬하면 응답 구조를 한눈에 파악할 수 있고, 누락된 필드나 잘못된 데이터 타입을 빠르게 발견할 수 있습니다.

설정 파일 관리package.json, tsconfig.json, .eslintrc.json 등 프로젝트 설정 파일을 수정할 때, 문법 오류가 있으면 빌드 전체가 실패합니다. 수정 전에 이 도구로 검증하면 커밋 전 오류를 사전에 차단할 수 있습니다.

데이터 변환 및 마이그레이션 — MongoDB, Elasticsearch, Firebase 등 JSON 기반 데이터베이스의 문서를 내보내거나 가져올 때, 데이터 구조를 시각적으로 확인하는 과정이 필수적입니다. 포맷터로 정렬한 뒤 필드 구조를 검토하면 마이그레이션 오류를 줄일 수 있습니다.

프로덕션 최적화 — 프론트엔드에서 로컬 JSON 파일을 번들에 포함할 때, Minify 기능으로 공백을 제거하면 파일 크기를 평균 20~30% 줄일 수 있습니다. 번역 파일(i18n)이나 정적 데이터 파일에 특히 효과적입니다.

팀 커뮤니케이션 — 백엔드 개발자가 API 스펙을 공유하거나, QA 엔지니어가 테스트 결과를 보고할 때, 정렬된 JSON은 가독성을 높여 의사소통 비용을 크게 줄여줍니다.

JSON 문법 규칙

JSON은 단순하지만 엄격한 문법 규칙을 따릅니다. 아래 규칙을 숙지하면 검증 오류의 대부분을 예방할 수 있습니다.

데이터 타입 — JSON은 6가지 데이터 타입을 지원합니다. 문자열(string)은 반드시 큰따옴표(")로 감싸야 하며, 작은따옴표(')는 허용되지 않습니다. 숫자(number)는 정수와 부동소수점을 포함하고, 선행 0(예: 007)은 허용되지 않습니다. 불리언(true, false)과 null은 소문자로만 작성합니다. 객체(object)는 중괄호 {}로, 배열(array)은 대괄호 []로 표현합니다.

키(key) 규칙 — 객체의 키는 반드시 큰따옴표로 감싼 문자열이어야 합니다. JavaScript 객체 리터럴과 달리, 따옴표 없는 키({name: "value"})는 유효한 JSON이 아닙니다.

후행 쉼표 금지 — 배열이나 객체의 마지막 요소 뒤에 쉼표를 넣으면 파싱 오류가 발생합니다. JavaScript에서는 허용되지만 JSON 표준에서는 금지됩니다. 예를 들어 {"a": 1, "b": 2,}는 유효하지 않습니다.

주석 불가 — JSON은 주석(//, /* */)을 지원하지 않습니다. 설정 파일에서 주석이 필요한 경우 JSON5, JSONC, YAML 같은 확장 포맷을 검토하세요.

JSON과 다른 데이터 포맷 비교

JSON은 웹 환경에서 가장 널리 쓰이지만, 용도에 따라 다른 포맷이 더 적합할 수 있습니다.

XML과 비교하면, JSON은 구조가 단순하고 파일 크기가 작으며 JavaScript와의 호환성이 뛰어납니다. 반면 XML은 네임스페이스, 스키마 검증, XSLT 변환 등 엔터프라이즈 환경에서 요구하는 기능을 기본 제공합니다. SOAP 기반 레거시 시스템과의 연동에서는 여전히 XML이 사용됩니다.

YAML은 들여쓰기 기반으로 사람이 읽기 더 편하고 주석을 지원합니다. Docker Compose, Kubernetes, GitHub Actions 등 설정 파일에서 주로 사용됩니다. 다만 들여쓰기 오류에 민감하고, 보안 측면에서 임의 코드 실행 위험이 있어 신뢰할 수 없는 소스의 YAML 파싱에는 주의가 필요합니다.

Protocol Buffers(protobuf)MessagePack은 바이너리 직렬화 포맷으로, JSON보다 훨씬 작은 크기와 빠른 파싱 속도를 제공합니다. 마이크로서비스 간 내부 통신이나 고성능이 요구되는 환경에서 JSON 대신 사용되며, gRPC는 protobuf를 기본 메시지 포맷으로 채택하고 있습니다.

자주 묻는 질문

입력한 JSON 데이터가 서버로 전송되나요?

아닙니다. 모든 처리는 브라우저 내에서 JavaScript의 JSON.parse()JSON.stringify() 메서드로 수행됩니다. 네트워크 요청이 발생하지 않으며, 서버에 어떤 데이터도 저장되지 않습니다. 브라우저 개발자 도구의 Network 탭에서 직접 확인할 수 있습니다.

JSON 검증에서 오류가 발생하면 어떻게 하나요?

입력 영역 위에 표시되는 오류 메시지에 문제 위치(line, position)가 포함됩니다. 가장 흔한 원인은 후행 쉼표(trailing comma), 작은따옴표 사용, 키에 따옴표 누락, 쉼표 빠짐입니다. 오류 위치를 기준으로 해당 줄과 그 직전 줄을 확인하세요.

Beautify와 Minify의 차이점은 무엇인가요?

Beautify(정렬)는 2칸 들여쓰기와 줄바꿈을 추가하여 사람이 읽기 쉽게 만듭니다. 디버깅, 코드 리뷰, 문서화에 적합합니다. Minify(압축)는 모든 공백과 줄바꿈을 제거하여 파일 크기를 최소화하며, API 응답 최적화나 프로덕션 배포에 적합합니다.

최대 처리 가능한 JSON 크기는 얼마인가요?

브라우저 메모리에 의존하므로 명확한 제한은 없지만, 일반적으로 10MB 이하의 JSON은 대부분의 환경에서 문제 없이 처리됩니다. Chrome 기준으로 수십 MB까지 가능하지만, 매우 큰 파일은 탭 메모리 사용량이 증가하여 지연될 수 있습니다. 100MB 이상의 JSON은 jq 같은 커맨드라인 도구를 권장합니다.

JavaScript 객체와 JSON의 차이점은 무엇인가요?

JSON은 JavaScript 객체 리터럴에서 파생되었지만 더 엄격한 규칙을 따릅니다. JSON에서는 키를 반드시 큰따옴표로 감싸야 하고, 후행 쉼표와 주석이 허용되지 않습니다. 또한 undefined, function, Symbol 같은 JavaScript 전용 타입은 JSON에서 표현할 수 없습니다. JSON.stringify()는 이러한 값을 자동으로 제거합니다.

JSON에 주석을 추가할 수 있나요?

표준 JSON(RFC 8259)은 주석을 지원하지 않습니다. 설정 파일에서 주석이 필요한 경우 JSON5(.json5)나 JSONC(.jsonc) 포맷을 사용할 수 있습니다. VS Code의 settings.json이 JSONC 형식을 사용하는 대표적인 예입니다. 또 다른 방법으로는 "_comment" 키를 활용하여 메타 정보를 포함하는 패턴이 있습니다.

JSON 정렬 시 키 순서가 변경되나요?

이 도구는 원본 키 순서를 유지합니다. JavaScript의 JSON.parse()는 객체 키 순서를 대부분 보존하지만, JSON 표준 자체는 키 순서를 보장하지 않습니다. 키를 알파벳순으로 정렬해야 하는 경우, 출력 결과를 별도로 가공하거나 jq -S 명령을 사용하세요.

API 응답에서 JSON을 어떻게 추출하나요?

브라우저 개발자 도구(F12)의 Network 탭에서 API 요청을 선택하고, Response 또는 Preview 탭에서 응답 본문을 복사할 수 있습니다. curl 명령으로 터미널에서 직접 요청하는 방법도 있습니다. 예: curl -s https://api.example.com/data. 복사한 JSON을 이 도구에 붙여넣으면 바로 정렬할 수 있습니다.

광고 영역