JavaScript Object Notation
JSON (.json) 파일 형식 완벽 가이드
JSON이란 무엇인가?
JSON(JavaScript Object Notation)은 사람이 읽고 쓰기 쉬우며 기계가 파싱하고 생성하기 쉬운 경량 데이터 교환 형식입니다. 확장자는 .json이며, 텍스트 기반의 완전히 언어 독립적인 형식으로 다양한 프로그래밍 환경에서 폭넓게 사용됩니다.
JSON은 2001년경 더글라스 크록포드(Douglas Crockford)가 처음 명세화하였으며, 당시 웹 애플리케이션에서 서버와 클라이언트 간의 데이터를 전송하기 위한 방법으로 주목받기 시작했습니다. 원래 JavaScript의 객체 리터럴 문법에서 파생되었지만, 이제는 Python, Java, C#, PHP, Ruby 등 사실상 모든 현대 프로그래밍 언어에서 지원됩니다. 2006년 IETF RFC 4627로 처음 공식 표준화되었고, 이후 2017년 RFC 8259로 갱신되어 현재까지 유지되고 있습니다. XML이 지배하던 데이터 교환 시장에서 JSON은 더 간결한 문법과 낮은 오버헤드 덕분에 빠르게 표준으로 자리잡았습니다.
기술적 사양
JSON은 이미지나 오디오 파일처럼 압축률, 색심도, 해상도, 코덱 등의 개념이 적용되는 바이너리 형식이 아닙니다. 대신 JSON만의 고유한 기술적 특성이 있습니다.
- 파일 형식: 순수 텍스트 기반 (Plain Text)
- 인코딩: 기본적으로 UTF-8을 사용하며, UTF-16 및 UTF-32도 지원됩니다.
- MIME 타입: application/json
- 공식 표준: ECMA-404, RFC 8259
- 데이터 타입: 문자열(string), 숫자(number), 객체(object), 배열(array), 불리언(boolean: true/false), null
- 파일 크기: 저장되는 데이터의 양에 따라 달라지며, 별도의 압축 알고리즘은 내장되어 있지 않습니다.
- 주석: 표준 JSON 명세에서는 주석을 지원하지 않습니다. 주석이 필요한 경우 JSON5나 JSONC 같은 변형 형식을 사용합니다.
- 구조: 키-값(Key-Value) 쌍으로 이루어진 객체와 순서가 있는 값의 목록인 배열로 데이터를 표현합니다.
JSON의 구조는 중괄호 {}로 객체를 나타내고, 대괄호 []로 배열을 나타냅니다. 키는 반드시 큰따옴표로 감싼 문자열이어야 하며, 각 키-값 쌍은 쉼표로 구분됩니다. 이 단순한 규칙 덕분에 파싱 오류가 적고 다양한 환경에서 일관되게 동작합니다.
주요 활용 사례
JSON은 현재 디지털 세계 곳곳에서 핵심적인 역할을 담당하고 있습니다.
- 웹 API 통신: RESTful API에서 서버와 클라이언트가 데이터를 주고받는 표준 형식으로 사용됩니다. 소셜 미디어, 결제 시스템, 지도 서비스 등 거의 모든 현대 웹 서비스의 API가 JSON을 활용합니다.
- 설정 파일: 수많은 소프트웨어와 개발 도구가 설정값을 저장하는 데 JSON을 사용합니다. 예를 들어 Node.js의 package.json이나 VS Code의 설정 파일이 대표적인 예입니다.
- 데이터 저장 및 전송: NoSQL 데이터베이스인 MongoDB나 Firebase는 JSON과 유사한 형식으로 데이터를 저장하며, 백엔드와 프론트엔드 간 데이터 직렬화에 널리 쓰입니다.
- 로그 파일: 애플리케이션 로그를 구조화된 형태로 기록할 때 JSON 형식을 사용하면 로그 분석 도구와의 호환성을 높일 수 있습니다.
- 게임 및 앱 개발: 게임의 레벨 데이터, 아이템 정보, 사용자 설정 등을 JSON 파일로 저장하여 유연하게 관리합니다.
장점과 단점 비교
| 장점 | 단점 |
|---|---|
| 사람이 읽고 쓰기 쉬운 직관적인 문법 | 주석을 지원하지 않아 설정 파일 작성 시 불편함 |
| 거의 모든 프로그래밍 언어에서 기본 지원 | 큰 규모의 데이터는 XML 대비 가독성이 떨어질 수 있음 |
| XML보다 가볍고 파싱 속도가 빠름 | 바이너리 데이터를 직접 표현하지 못함 (Base64 인코딩 필요) |
| 웹 표준 API(fetch, XMLHttpRequest)와 완벽 호환 | 데이터 타입이 제한적이어서 날짜, 정수/부동소수점 구분 불가 |
| 경량화된 구조로 네트워크 트래픽 절감 | 스키마가 없어 데이터 유효성 검증이 별도로 필요 |
| 중첩 구조를 통해 복잡한 계층형 데이터 표현 가능 | 순환 참조(Circular Reference) 구조를 표현할 수 없음 |
JSON 파일을 여는 방법
JSON 파일은 텍스트 파일이기 때문에 대부분의 텍스트 편집기로 열 수 있습니다. 다음은 JSON 파일을 열거나 편집하는 데 자주 사용되는 프로그램 목록입니다.
- Visual Studio Code: JSON 문법 강조, 자동 완성, 유효성 검사 기능을 기본 제공하는 가장 인기 있는 선택입니다.
- Notepad++ (Windows): 무료 텍스트 편집기로, JSON 플러그인을 설치하면 구조를 보기 좋게 표시합니다.
- Sublime Text: 가볍고 빠른 편집기로 JSON 문법 강조를 기본 지원합니다.
- 메모장 / TextEdit: 가장 기본적인 방법으로, 서식 없이 원본 텍스트를 그대로 확인할 수 있습니다.
- 웹 브라우저 (Chrome, Firefox): JSON 파일을 드래그하면 브라우저에서 트리 구조로 보기 편하게 렌더링됩니다.
- JSONLint / JSON Formatter (온라인 도구): JSON 유효성 검사와 들여쓰기 정렬을 웹에서 바로 할 수 있는 온라인 도구입니다.
- JetBrains IDE (IntelliJ, WebStorm 등): 전문 개발 환경에서 강력한 JSON 편집 및 검색 기능을 제공합니다.
JSON 파일 온라인으로 변환하는 방법
JSON 파일을 CSV, XML, YAML 등 다른 형식으로 변환하거나 반대로 다른 형식의 파일을 JSON으로 변환해야 할 때가 있습니다. 이런 경우 별도의 소프트웨어를 설치하지 않고도 온라인 변환 도구를 이용하면 간편하게 작업할 수 있습니다.
Metric Converter(metric-converter.com)는 JSON을 포함한 다양한 파일 형식 간의 변환을 무료로 지원하는 온라인 서비스입니다. 파일을 업로드하고 원하는 출력 형식을 선택하면 몇 초 안에 변환이 완료되어 즉시 다운로드할 수 있습니다. 회원 가입 없이 사용할 수 있어 빠르게 변환 작업을 처리할 때 유용합니다.
자주 묻는 질문 (FAQ)
JSON과 XML은 어떻게 다른가요?
JSON과 XML은 모두 데이터를 구조화하여 저장하고 전송하는 데 사용되지만, 여러 면에서 다릅니다. JSON은 XML보다 훨씬 간결한 문법을 가지고 있어 같은 데이터를 더 적은 바이트로 표현할 수 있습니다. 또한 JSON은 JavaScript와의 친화성이 높아 웹 환경에서 파싱 속도가 더 빠릅니다. 반면 XML은 네임스페이스, 스키마(XSD), XSLT 변환 등 더 풍부한 기능을 제공하며 문서 중심의 데이터 표현에 유리합니다. 현재 웹 API 분야에서는 JSON이 사실상 표준으로 자리잡은 상태입니다.
JSON 파일이 손상되었거나 유효하지 않은지 어떻게 확인하나요?
JSON 파일의 유효성은 JSONLint(jsonlint.com)와 같은 온라인 유효성 검사 도구를 통해 쉽게 확인할 수 있습니다. VS Code 같은 편집기도 JSON 파일을 열면 자동으로 문법 오류를 표시해 줍니다. 가장 흔한 오류로는 마지막 항목 뒤에 쉼표를 넣는 것, 키를 큰따옴표 대신 작은따옴표로 감싸는 것, 중괄호나 대괄호의 짝이 맞지 않는 것 등이 있습니다.
JSON 파일은 보안에 안전한가요?
JSON 형식 자체는 실행 코드가 아닌 순수 데이터 표현 방식이므로 기본적으로 안전합니다. 그러나 신뢰할 수 없는 출처의 JSON 데이터를 JavaScript의 eval() 함수로 처리하면 코드 인젝션 공격에 취약해질 수 있습니다. 반드시 JSON.parse()를 사용하여 JSON 데이터를 처리해야 하며, 외부에서 받은 JSON 데이터의 내용을 검증하는 습관이 중요합니다.
JSON5와 JSONC는 일반 JSON과 무엇이 다른가요?
JSON5와 JSONC는 표준 JSON의 엄격한 제약을 완화한 확장 형식입니다. JSON5는 주석 추가, 마지막 항목 뒤 쉼표 허용, 작은따옴표 문자열 사용, 16진