현대의 모든 웹 애플리케이션, 클라우드 시스템 및 모바일 백엔드는 서로 다른 환경 간에 구조화된 데이터를 교환하기 위한 공통 언어에 의존합니다. 그 표준 형식이 바로 JSON(JavaScript Object Notation)입니다.
1. JSON 개요 및 역사적 배경
JSON은 2000년대 초 더글러스 크록포드(Douglas Crockford)에 의해 복잡하고 비대한 XML의 가볍고 직관적인 대안으로 널리 보급되었습니다. 자바스크립트 객체 표기법에서 착안되었으나, 프로그래밍 언어에 독립적인 표준 형식으로서 RFC 8259 및 ECMA-404 국제 표준으로 제정되었습니다.
2. 6가지 핵심 데이터 타입
JSON 사양은 오직 6가지 데이터 타입만을 정의합니다. 이 범위를 벗어난 데이터가 포함되면 유효하지 않은 JSON으로 처리됩니다:
{ "userId": 101, "role": "admin" }[ "production", "staging", "dev" ]"큰따옴표로 둘러싸인 유니코드 문자열"42, 3.14159, -17, 1.2e5true, falsenull3. 엄격한 문법 및 구문 규칙
유연한 자바스크립트 엔진과 달리 JSON 파서는 엄격하고 예외 없는 문법 규칙을 강제합니다:
- 큰따옴표 필수: 객체 키와 문자열 리터럴은 반드시 큰따옴표(
"key")를 사용해야 합니다. 작은따옴표('key')는 즉시 구문 에러를 유발합니다. - 트레일링 콤마(Trailing Comma) 금지: 쉼표는 요소 간 구분 기호로만 작동합니다. 마지막 요소 뒤에 불필요한 쉼표를 붙이면 파싱 에러가 발생합니다.
- 주석 사용 불가: 표준 JSON 사양에서는
//또는/* */형태의 주석 작성을 허용하지 않습니다.
4. 추상 구문 트리(AST) 파싱 원리
브라우저가 JSON.parse()를 실행하면 결정론적 어휘 분석기가 원시 문자 토큰을 메모리 내 추상 구문 트리(AST)로 변환합니다. 파서는 토큰 상태를 추적하여 괄호의 짝과 UTF-8 서러게이트 쌍을 엄격히 검증한 후 네이티브 객체를 생성합니다.
5. JSON vs XML vs YAML 비교
XML은 스키마(XSD)가 중요한 문서 관리에 적합하고 YAML은 가독성이 요구되는 DevOps 설정 파일에 적합하지만, 고속 데이터 전송이 요구되는 웹 API에서는 직렬화 오버헤드가 적고 브라우저에서 즉시 파싱 가능한 JSON이 압도적인 표준입니다.
6. 보안 및 모범 사례
신뢰할 수 없는 외부 JSON 입력을 파싱할 때 절대로 eval()을 호출하지 마십시오. 악성 스크립트 실행 위험이 없는 브라우저 표준 JSON.parse() 함수를 항상 사용해야 합니다.