쉬운 JSON 학습은 복잡한 이론보다 몇 가지 기본 규칙을 정확히 아는 데서 시작합니다. JSON(JavaScript Object Notation)은 데이터를 주고받을 때 가장 널리 쓰이는 텍스트 형식입니다. API 응답, 설정 파일, 로그 데이터 등 개발 현장 곳곳에서 사용됩니다. 문법 자체는 단순하지만 쉼표 하나나 따옴표 하나 때문에 오류가 나는 경우가 많습니다. 이 글에서는 초보자가 반드시 알아야 할 5가지 핵심 규칙과 자주 하는 실수, 실무에서 바로 쓸 수 있는 활용 팁을 정리합니다.
JSON이란 무엇이고 왜 쉬운가요
JSON은 사람이 읽기 쉽고 기계가 해석하기도 쉬운 경량 데이터 교환 형식입니다. 이름에 JavaScript가 들어가지만 특정 언어에 종속되지 않습니다. Python, Java, PHP, Go 등 거의 모든 프로그래밍 언어가 기본 기능이나 표준 라이브러리로 JSON을 지원합니다.
JSON이 쉽다고 평가받는 이유는 구조가 딱 두 가지뿐이기 때문입니다. 중괄호로 감싼 객체(키와 값의 모음)와 대괄호로 감싼 배열(값의 목록)만 이해하면 어떤 JSON 문서든 읽을 수 있습니다. XML처럼 여는 태그와 닫는 태그를 반복할 필요가 없어서 같은 데이터를 훨씬 짧게 표현할 수 있습니다.
쉬운 JSON 작성을 위한 5가지 핵심 규칙
아래 5가지 규칙만 지키면 JSON 문법 오류 대부분을 예방할 수 있습니다.
- 키는 반드시 큰따옴표로 감쌉니다. name이나 'name'이 아니라 "name"처럼 써야 합니다. JavaScript 객체와 가장 크게 다른 부분입니다.
- 문자열 값도 큰따옴표만 사용합니다. JSON에서는 작은따옴표를 허용하지 않습니다.
- 키와 값은 콜론(:)으로, 항목끼리는 쉼표(,)로 구분합니다. 단, 마지막 항목 뒤에는 쉼표를 붙이지 않습니다.
- 객체는 중괄호 { }, 배열은 대괄호 [ ]를 사용합니다. 둘은 서로 자유롭게 중첩할 수 있습니다.
- 주석을 쓸 수 없습니다. // 나 /* */ 형태의 주석을 넣으면 파싱 오류가 발생합니다.
이 규칙을 모두 반영한 올바른 JSON 예시는 다음과 같습니다.
{
"name": "홍길동",
"age": 30,
"isMember": true,
"hobbies": ["독서", "등산"],
"address": {
"city": "서울",
"zipCode": "04524"
},
"phone": null
}회원 한 명의 정보를 객체로 표현한 예시입니다. 취미 목록은 배열로, 주소는 객체 안의 객체로 중첩했습니다. 우편번호처럼 맨 앞의 0이 의미 있는 값은 숫자가 아닌 문자열로 저장해야 안전합니다.
JSON에서 사용할 수 있는 6가지 데이터 타입
JSON의 값(value)에는 정해진 6가지 타입만 넣을 수 있습니다. 날짜, 함수, undefined 같은 타입은 없으므로 필요하면 문자열로 바꿔서 저장해야 합니다.
| 타입 | 예시 | 설명 |
|---|---|---|
| 문자열(String) | "서울" | 반드시 큰따옴표 사용 |
| 숫자(Number) | 30, 3.14, -7 | 따옴표 없이 작성, 정수와 실수 구분 없음 |
| 불리언(Boolean) | true, false | 소문자로만 작성 |
| 널(Null) | null | 값이 없음을 명시 |
| 객체(Object) | {"key": "value"} | 키와 값 쌍의 모음 |
| 배열(Array) | [1, 2, 3] | 순서가 있는 값의 목록 |
초보자가 자주 하는 JSON 실수와 해결법
JSON 파싱 오류는 대부분 몇 가지 패턴에서 반복됩니다. 아래 코드는 초보자가 흔히 작성하는 잘못된 예시입니다.
{
name: '홍길동',
"age": "30",
"isMember": True,
"hobbies": ["독서", "등산",],
}- 따옴표 없는 키와 작은따옴표 문자열: name: '홍길동'은 "name": "홍길동"으로 고쳐야 합니다.
- 숫자를 문자열로 저장: "30"은 문법 오류는 아니지만 계산하거나 정렬할 때 문제가 생깁니다. 숫자로 쓸 값은 30처럼 따옴표 없이 적습니다.
- 대문자 불리언: True, FALSE, NULL은 모두 오류입니다. 반드시 소문자 true, false, null을 사용합니다.
- 후행 쉼표(Trailing Comma): 배열이나 객체의 마지막 항목 뒤에 붙은 쉼표는 가장 흔한 오류 원인입니다.
API 응답처럼 한 줄로 압축된 JSON에서는 이런 오류를 눈으로 찾기 어렵습니다. 이럴 때 JSON 정렬기로 들여쓰기를 적용하면 구조가 한눈에 보이고, 문법 오류가 난 위치도 빠르게 찾을 수 있습니다.
실무에서 JSON을 쉽게 다루는 4가지 팁
- 키 이름 규칙을 통일합니다. userName(camelCase)과 user_name(snake_case)을 섞어 쓰면 유지보수가 어려워집니다. 프로젝트 초반에 하나로 정해 두는 것이 좋습니다.
- 중첩은 3단계 이내로 유지합니다. 중첩이 너무 깊으면 데이터를 꺼내 쓰는 코드가 복잡해집니다.
- 언어별 기본 함수를 익힙니다. JavaScript는 JSON.parse()와 JSON.stringify()를, Python은 json.loads()와 json.dumps()를 기본으로 씁니다. JSON.stringify(data, null, 2)처럼 세 번째 인자를 주면 들여쓰기된 결과를 얻을 수 있습니다.
- 한글 인코딩을 확인합니다. Python에서 json.dumps()에 ensure_ascii=False 옵션을 주지 않으면 한글이 \uD64D 같은 유니코드 이스케이프로 출력됩니다. PHP에서는 JSON_UNESCAPED_UNICODE 플래그가 같은 역할을 합니다.
정리하면 쉬운 JSON의 핵심은 큰따옴표, 콜론과 쉼표, 중괄호와 대괄호, 그리고 6가지 데이터 타입입니다. 처음에는 작은 설정 파일이나 API 응답을 직접 읽고 고쳐 보면서 규칙을 손에 익히는 것이 좋습니다. 이렇게 익숙해지면 구조가 복잡한 데이터도 어렵지 않게 다룰 수 있습니다.