JSON with Comments

JSONC(JSON with Comments)는 JavaScript 스타일 주석을 허용하도록 표준 JSON을 확장합니다. 많은 개발 도구가 설정을 문서화하는 데 도움이 되는 주석이 있는 구성 파일에 JSONC를 사용합니다. 이 파서는 데이터 구조를 보존하면서 주석을 제거하여 유효한 JSON을 생성합니다.

사양

주요 사용 사례

  • TypeScript/JavaScript 프로젝트의 tsconfig.json 및 jsconfig.json 파싱
  • VS Code settings.json 및 확장 구성 읽기
  • Cloudflare wrangler.jsonc 구성 파일 처리
  • 인라인 문서와 함께 ESLint, Prettier 및 기타 도구 구성 편집

기능

  • 한 줄 주석 파싱 (// comment)
  • 여러 줄 주석 파싱 (/* comment */)
  • 후행 쉼표 처리 (JSONC 파일에서 흔함)
  • 주석을 제거하여 유효한 JSON 출력 생성
  • 모든 표준 JSON 파서 기능 (트리 뷰, 변환)

예제

TypeScript 구성

사용해 보기 →

컴파일러 옵션을 설명하는 주석이 있는 tsconfig.json 파일.

{
  // Compiler options for the project
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    /* Enable all strict type checking options */
    "strict": true
  }
}

  • VS Code, TypeScript 및 많은 최신 도구가 JSONC를 기본적으로 지원합니다.
  • 구성을 공유할 때 수신자의 도구가 주석을 지원하는지 고려하세요.
  • 도구가 엄격한 JSON을 요구할 때 주석을 제거하여 표준 JSON으로 변환하세요.

이해하기 JSON with Comments

JSONC(JSON with Comments)는 JavaScript 스타일의 한 줄(//) 및 여러 줄(/* */) 주석과 배열 및 객체의 마지막 요소 뒤 후행 쉼표를 허용하는 표준 JSON의 확장입니다. 공식 표준은 아니지만, JSONC는 인라인 문서가 유지보수성을 향상시키는 개발자 대면 구성 파일의 사실상 형식이 되었습니다.

Microsoft는 settings.json, keybindings.json, launch.json, extensions.json에 사용하는 Visual Studio Code를 통해 JSONC를 대중화했습니다. TypeScript의 tsconfig.json과 JavaScript의 jsconfig.json은 JSONC 파일이며, .json 확장자를 사용할 때 많은 ESLint, Prettier, Babel 구성 파일도 마찬가지입니다. Cloudflare의 wrangler.jsonc는 주석 지원을 알리기 위해 .jsonc 확장자를 명시적으로 사용합니다.

일반 JSON 대비 JSONC의 주요 장점은 문서화입니다. 구성 파일에는 키 이름만으로는 목적이 명확하지 않은 설정이 종종 포함됩니다. 주석을 통해 개발자는 설정이 존재하는 이유, 유효한 값이 무엇인지, 변경의 결과가 무엇인지 설명할 수 있습니다. 후행 쉼표는 마지막 요소가 다른 모든 요소와 같은 형식을 갖도록 하여 버전 관리 노이즈를 줄입니다. 새 항목을 추가하면 diff에서 두 줄이 아닌 한 줄만 변경됩니다.

내부적으로 JSONC 파서는 주석과 후행 쉼표를 제거한 후 결과를 표준 JSON 파서에 전달합니다. 이는 데이터 모델이 JSON과 동일하다는 것을 의미합니다. 주석은 사람을 위한 메타데이터이지 프로그램을 위한 데이터가 아닙니다. 엄격한 JSON 준수가 필요한 도구를 위해 JSONC를 JSON으로 변환할 때 주석은 단순히 제거됩니다. VS Code에서 사용되는 Microsoft의 node-jsonc-parser 라이브러리가 JSONC 파싱의 참조 구현입니다.

JSONC는 RFC나 ECMA 사양으로 정의된 공식 표준이 아닙니다. VS Code와 TypeScript를 통해 Microsoft가 대중화한 관례이며, 참조 구현인 jsonc-parser 라이브러리에 의해 동작이 잘 정의되어 있습니다. JSONC를 지원하는 다른 도구(ESLint, Prettier, 다양한 편집기)는 한 줄 주석, 여러 줄 주석, 후행 쉼표에 대해 동일한 관례를 따릅니다. 일반적인 JSONC 파일에는 tsconfig.json과 jsconfig.json(TypeScript/JavaScript), VS Code 설정 파일(settings.json, launch.json, tasks.json, keybindings.json), wrangler.jsonc(Cloudflare Workers), devcontainer.json(VS Code Dev Containers) 및 기타 다양한 도구 구성이 포함됩니다. 주석의 이점을 받을 수 있는 주로 개발자가 편집하는 모든 JSON 파일은 JSONC를 지원할 가능성이 높습니다.

JSONC는 명시적인 JSONC 지원이 있는 도구가 읽는 구성 파일에만 사용해야 합니다. API 응답, 데이터 저장, 서비스 간 통신에는 항상 표준 JSON을 사용해야 합니다. 대부분의 JSON 파서가 주석을 구문 오류로 거부하기 때문입니다. 표준 JSON 파서로 JSONC 구성 파일을 프로그래밍 방식으로 처리하려면 JSONC 인식 라이브러리를 사용하여 먼저 주석을 제거하세요.

JSONC는 JSON5보다 보수적입니다. JSON5는 JSON의 더 광범위한 상위집합입니다. JSONC는 주석과 후행 쉼표만 추가하는 반면, JSON5는 작은따옴표 문자열, 따옴표 없는 객체 키, 16진수 숫자, 선행 및 후행 소수점, Infinity와 NaN, 여러 줄 문자열도 허용합니다. JSONC는 개발자 생태계에서 더 광범위한 도구 지원을 가지며, JSON5는 Babel의 babel.config.json5 같은 특정 구성 파일에서 사용되지만 전반적으로 채택이 좁습니다.

← 전체 도구로 돌아가기