JSON의 뜻과 첫 번째 예제
JSON은 JavaScript Object Notation의 약자입니다. 2000년대 초 더글러스 크록퍼드(Douglas Crockford)가 널리 알렸으며, JavaScript에서 문법을 빌려 왔고 RFC 8259와 ECMA-404로 표준화되어 있습니다. 이름과 달리 JSON은 특정 프로그래밍 언어에 종속되지 않으며, 사실상 모든 언어에서 읽고 쓸 수 있습니다.
한 사람을 설명하는 간단한 JSON 문서:
{"name": "Ada Lovelace", "born": 1815, "languages": ["English", "French"], "mathematician": true, "spouse": null}
JSON 데이터 타입
| 타입 | 예시 | 참고 |
|---|---|---|
| 문자열(String) | "Hello" | 큰따옴표로 감싼 텍스트, \n 같은 이스케이프 사용 가능 |
| 숫자(Number) | 42, -3.14, 6.02e23 | NaN, Infinity, 16진수, 앞자리 0은 허용되지 않음 |
| 불리언(Boolean) | true, false | 항상 소문자 |
| Null | null | 비어 있거나 알 수 없는 값 |
| 객체(Object) | {"key": "value"} | 이름/값 쌍의 모음, 이름은 문자열 |
| 배열(Array) | [1, 2, 3] | 모든 타입의 값을 담을 수 있는 순서 있는 목록 |
JSON에는 날짜 타입이 없습니다. 날짜는 보통 "2026-05-01T10:00:00Z" 같은 ISO 8601 문자열로 씁니다.
JSON 형식: 문법 규칙
- 데이터는 이름/값 쌍으로 씁니다:
"name": "Ada". - 이름(키)과 문자열에는 항상 큰따옴표를 사용하며, 작은따옴표는 쓸 수 없습니다.
- 항목은 쉼표로 구분하며, 마지막 항목 뒤에는 쉼표를 붙이지 않습니다.
- 중괄호
{ }는 객체를, 대괄호[ ]는 배열을 나타냅니다. - 주석은 허용되지 않습니다.
- 항목 사이의 공백과 줄바꿈은 무시되므로 같은 데이터를 압축하거나 보기 좋게 정렬할 수 있습니다.
- JSON 텍스트에는 최상위 값이 하나만 있으며 UTF-8로 인코딩됩니다.
JSON 파일이란?
JSON 파일은 JSON 문서 하나가 담긴 .json 확장자의 일반 텍스트 파일입니다. 미디어 타입은 application/json이며, UTF-8로 저장해야 합니다. 대표적인 JSON 파일로는 앱과 웹사이트의 데이터 내보내기 파일(예: Google 테이크아웃이나 SNS 데이터 다운로드), package.json 같은 설정 파일, 디스크에 저장한 API 응답, 분석용 데이터 세트가 있습니다. 일반 텍스트이므로 JSON 파일은 열어도 안전하며 코드를 실행할 수 없습니다.
JSON 파일 여는 방법
| 환경 | 방법 |
|---|---|
| Windows | 파일을 마우스 오른쪽 버튼으로 클릭 → 연결 프로그램 → 메모장을 선택하거나, VS Code 같은 코드 편집기를 사용하세요. 파일을 브라우저 창으로 끌어다 놓아도 내용을 볼 수 있습니다. |
| Mac | 텍스트 편집기나 코드 편집기로 열거나, 브라우저 창에 끌어다 놓으세요. |
| iPhone과 Android | 파일 앱에서 텍스트 뷰어로 열거나, 온라인 JSON 뷰어에 불러오세요. 이 사이트의 뷰어는 휴대폰에서도 작동하며 파일이 기기 밖으로 나가지 않습니다. |
| 웹 브라우저 | Firefox에는 JSON 뷰어가 내장되어 있습니다. 어떤 브라우저에서든 온라인 JSON 뷰어를 사용하면 데이터를 접이식 트리로 볼 수 있습니다. |
| Excel | Windows에서 데이터 → 데이터 가져오기 → 파일에서 → JSON에서를 사용하거나, 먼저 JSON CSV 변환으로 파일을 변환하세요. |
JSON vs XML 비교
| JSON | XML | |
|---|---|---|
| 문법 | 중괄호, 대괄호, 이름/값 쌍 | 여는 태그와 닫는 태그 |
| 데이터 타입 | 문자열, 숫자, 불리언, null, 객체, 배열 | 스키마로 타입을 정의하지 않으면 텍스트만 |
| 크기 | 간결함 | 닫는 태그 때문에 더 큼 |
| 주석 | 없음 | 있음 |
| 속성, 네임스페이스 | 없음 | 있음 |
| 주요 용도 | 웹 API, 설정, NoSQL 데이터베이스 | 문서, 오피스 파일, SOAP 및 엔터프라이즈 시스템 |
API와 애플리케이션에서의 JSON
대부분의 웹 API는 JSON을 주고받습니다. 클라이언트가 Content-Type: application/json 헤더와 함께 요청을 보내면 서버가 JSON으로 응답하고, 프로그램은 JavaScript의 JSON.parse, Python의 json.loads, PHP의 json_decode로 이를 네이티브 객체로 변환합니다. JSON은 package.json, tsconfig.json 같은 설정 파일, MongoDB 같은 문서 데이터베이스, AI 모델의 구조화된 출력에도 쓰입니다.
자주 발생하는 JSON 오류
- 마지막 항목 뒤의 후행 쉼표:
[1, 2,] - 작은따옴표 또는 따옴표 없는 키:
{'a': 1},{a: 1} // note같은 주석- 항목 사이에 빠진 쉼표나 괄호
undefined,NaN,True같은 JavaScript 또는 Python 값
JSON 검증기에 데이터를 붙여넣으면 문제의 정확한 줄과 열을 확인할 수 있고, ‘복구’ 기능으로 자동 수정할 수도 있습니다.
JSON5, JSONC, JSON Lines
- JSON5 – 사람이 직접 작성하는 파일을 위한 더 느슨한 상위 집합으로, 주석, 후행 쉼표, 작은따옴표, 따옴표 없는 키, 16진수를 허용합니다. 표준 JSON 파서로는 읽을 수 없습니다.
- JSONC – 주석을 허용하는 JSON으로, VS Code 설정과
tsconfig.json에 사용됩니다. - JSON Lines / NDJSON(
.jsonl) – 한 줄에 JSON 값 하나를 쓰는 형식으로, 로그와 대용량 데이터 스트리밍에 적합합니다. - GeoJSON – 지리 정보를 표현하기 위한 JSON으로, RFC 7946에 정의되어 있습니다.
자주 묻는 질문
JSON은 프로그래밍 언어인가요?
아니요. JSON은 데이터 형식입니다. 데이터를 표현할 뿐 로직, 함수, 주석은 담을 수 없습니다.
JSON과 JavaScript 객체는 같은 것인가요?
아니요. JSON은 JavaScript 객체 리터럴처럼 보이는 텍스트이지만 더 엄격합니다. 키와 문자열에는 큰따옴표가 필요하고, 함수, undefined, 주석은 허용되지 않습니다. JSON.parse를 사용하면 텍스트가 실제 객체로 변환됩니다.
JSON 파일은 어떻게 만드나요?
아무 텍스트 편집기에서 위의 규칙에 따라 데이터를 작성하고, UTF-8 인코딩과 .json 확장자로 저장하세요. 사용하기 전에는 JSON 검증기로 오류가 없는지 확인하는 것이 좋습니다.
최종 업데이트: