JSONC

IT 위키

JSONC(JSON with Comments)는 표준 JSON(JavaScript Object Notation)에 JavaScript 스타일 주석을 허용하도록 확장한 설정 파일용 데이터 표기 형식이다.[1]

JSONC는 JSON의 기본 문법을 유지하면서 한 줄 주석(//)과 블록 주석(/* ... */)을 사용할 수 있게 한 형식이다. 주로 사람이 직접 읽고 수정하는 설정 파일에서 각 항목의 의미, 기본값, 주의사항 등을 함께 기록하기 위해 사용된다.[2]

표준 JSON은 RFC 8259에서 정의된 데이터 교환 형식이며, 문법상 주석 토큰을 포함하지 않는다. RFC 8259는 JSON 파서가 JSON 문법에 맞는 모든 텍스트를 받아들여야 하며, 파서 구현이 비표준 확장을 받을 수는 있다고 설명한다. 따라서 JSONC는 표준 JSON 자체가 아니라, 특정 도구와 파서가 지원하는 JSON 확장 형식으로 보는 것이 적절하다.[3]

JSONC는 JSON 문법에 JavaScript 스타일 주석을 추가한 형태이다. 주석은 일반 JSON에서 공백이 허용되는 위치에 둘 수 있으며, 파싱 시 데이터 구조에는 영향을 주지 않는다.[4]

요소 설명
한 줄 주석 //부터 줄 끝까지를 주석으로 처리 // 설명
블록 주석 /*부터 */까지를 주석으로 처리 /* 여러 줄 설명 */
중첩 블록 주석 지원하지 않음 /* a /* b */ c */ 형태는 피해야 함
후행 쉼표 구현체에 따라 허용 여부가 다르며, 일반적으로 이식성을 위해 피하는 것이 안전함 { "a": 1, }
{
  // 개발 서버 설정
  "host": "localhost",
  "port": 3000,

  /*
    기능 플래그
    true로 설정하면 실험 기능을 활성화한다.
  */
  "experimentalFeature": false
}

위 예시는 JSONC로는 유효할 수 있지만, 표준 JSON 파서에서는 주석 때문에 오류가 발생할 수 있다. 표준 JSON만 받는 API, 데이터베이스, 메시지 큐 등에 전달할 때는 주석을 제거한 JSON으로 변환해야 한다.

JSON과의 차이

[편집 | 원본 편집]
항목 JSON JSONC
표준화 상태 RFC 8259 및 ECMA-404 계열의 표준 데이터 교환 형식 JSON의 비표준 확장 또는 도구별 지원 형식
주석 허용하지 않음 //, /* ... */ 주석 허용
주 용도 시스템 간 데이터 교환, API 응답, 직렬화 데이터 사람이 편집하는 설정 파일, 도구 설정 파일
일반 파일 확장자 .json .jsonc
호환성 대부분의 JSON 파서에서 처리 가능 JSONC 지원 파서 또는 전처리 필요

사용 사례

[편집 | 원본 편집]

JSONC는 설정 파일처럼 사람이 직접 편집하는 문서에서 많이 사용된다. Visual Studio Code는 기본 JSON 모드와 별도로 JSON with Comments(jsonc) 모드를 제공하며, 이 모드는 VS Code의 settings.json, tasks.json, launch.json 같은 설정 파일에 사용된다. 해당 모드에서는 한 줄 주석과 블록 주석을 사용할 수 있고, 후행 쉼표도 허용하지만 일반적으로 경고가 표시될 수 있다.[5]

Microsoft의 jsonc-parser는 JSON with Comments를 처리하기 위한 스캐너 및 파서 구현체이다. 이 라이브러리는 JSONC와 표준 JSON 모두를 처리할 수 있으며, 주석 제거, 위치 탐색, 포맷팅, 수정 편집 계산 등의 기능을 제공한다.[6]

주의사항

[편집 | 원본 편집]
  • JSONC는 표준 JSON과 다르므로, application/json으로 송수신되는 공개 API 데이터에는 사용하지 않는 것이 안전하다.
  • 표준 JSON 파서에 JSONC 파일을 그대로 전달하면 주석 또는 후행 쉼표 때문에 파싱 오류가 발생할 수 있다.
  • 후행 쉼표는 도구에 따라 처리 방식이 다르므로, 협업 프로젝트에서는 허용 여부를 명확히 정해야 한다.
  • 설정 파일을 배포하거나 다른 시스템으로 전달할 때는 주석을 제거한 JSON으로 변환하는 절차를 두는 것이 좋다.
  • JSONC와 JSON5는 모두 JSON 확장 형식이지만, JSON5는 따옴표 없는 키, 작은따옴표 문자열 등 더 넓은 문법을 허용하므로 동일한 형식으로 간주해서는 안 된다.

같이 보기

[편집 | 원본 편집]
  1. JSONC | Specification, https://jsonc.org/, 확인일: 2026-06-19
  2. JSONC | Specification, https://jsonc.org/, 확인일: 2026-06-19
  3. RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format, https://datatracker.ietf.org/doc/html/rfc8259, 확인일: 2026-06-19
  4. JSONC | Specification, https://jsonc.org/, 확인일: 2026-06-19
  5. Editing JSON with Visual Studio Code, https://code.visualstudio.com/docs/languages/json, 확인일: 2026-06-19
  6. microsoft/node-jsonc-parser: Scanner and parser for JSON with comments, https://github.com/microsoft/node-jsonc-parser, 확인일: 2026-06-19