ToolDeck의 TOML 도구를 사용하면 브라우저에서 직접 TOML 설정 파일을 포맷, 검증, 변환할 수 있습니다 — 설치, 계정, 서버 업로드가 필요 없습니다. TOML Formatter는 TOML 입력을 파싱하여 일관된 들여쓰기, 정규화된 키 순서, 구문 문제를 정확히 짚어주는 인라인 검증 오류와 함께 재직렬화합니다. TOML to JSON Converter는 TOML 문서를 동등한 JSON으로 변환하며, 날짜/시간, 인라인 테이블, 배열 테이블을 포함한 데이터 타입을 보존합니다. 두 도구 모두 완전히 클라이언트 측에서 실행되므로, 데이터베이스 자격증명, API 엔드포인트, 배포 시크릿을 포함하는 설정 파일이 사용자 기기에 그대로 유지됩니다. 역방향 변환이 필요하다면 JSON 카테고리의 JSON to TOML Converter를 사용하세요.
TOML 도구란 무엇인가요?
TOML(Tom's Obvious, Minimal Language)은 명시적이고 모호하지 않은 구문을 중심으로 만들어진 설정 파일 형식입니다. GitHub 공동창업자 Tom Preston-Werner가 만든 TOML은 2013년에 처음 출시되어 2021년 1월 v1.0 명세에 도달했습니다. 이 형식은 해시 테이블에 명확하게 매핑됩니다. 모든 TOML 파일은 [대괄호]로 표시된 테이블로 구성된 키-값 쌍의 트리를 정의합니다. YAML과 달리 TOML은 구조에 들여쓰기를 사용하지 않으므로, 공백 관련 파싱 버그 전체 범주를 제거합니다. JSON과 달리 TOML은 주석, 네이티브 날짜/시간 타입, 멀티라인 문자열을 지원합니다 — 설정 파일에 필요하지만 JSON이 제공하도록 설계되지 않은 기능들입니다.
TOML 도구는 TOML 파일을 읽고, 검증하고, 변환하는 반복적인 작업을 자동화합니다. 포맷 도구는 들여쓰기와 키 순서를 정규화하여 여러 기여자가 동일한 파일을 편집하더라도 설정 파일의 가독성을 유지합니다. 변환 도구는 TOML과 JSON 사이를 번역하는데, 라이브러리나 API가 JSON 입력을 기대하지만 원본이 TOML 설정인 경우에 유용합니다. 검증은 애플리케이션 시작 시 장애가 발생하기 전에 닫는 괄호 누락, 중복 키, 잘못된 날짜/시간 리터럴과 같은 구문 오류를 잡아냅니다.
이러한 작업은 Rust 프로젝트(Cargo.toml이 패키지 매니페스트인 경우), Python 패키징(pyproject.toml이 PEP 518과 PEP 621에서 표준 빌드 설정으로 setup.py를 대체한 경우), Hugo 정적 사이트(기본적으로 TOML을 사이트 설정에 사용하는 경우), 그리고 TOML 파일에 설정을 저장하는 인프라 환경에서 자주 발생합니다. TOML 명세는 toml.io에서 관리되며, 모든 주요 프로그래밍 언어에 파서가 존재합니다.
왜 ToolDeck의 TOML 도구를 사용해야 할까요?
ToolDeck의 TOML 도구는 JavaScript를 사용하여 브라우저 탭 내에서 모든 것을 파싱하고 처리합니다. 설정 데이터가 서버로 전송되지 않고, 계정이 필요하지 않으며, 최초 페이지 로드 후 오프라인에서도 작동합니다.
🔒기본적으로 비공개
설정 파일에는 데이터베이스 URL, API 키, 배포 대상과 같은 민감한 값이 포함되는 경우가 많습니다. ToolDeck은 TOML을 완전히 클라이언트 측에서 처리하므로 브라우저 밖으로 아무것도 나가지 않습니다. 독점 프로젝트와 내부 인프라 설정에 안전합니다.
⚡즉각적인 피드백
TOML을 붙여넣으면 포맷된 출력 또는 JSON을 즉시 확인할 수 있습니다. 구문 오류는 줄 번호와 설명과 함께 보고됩니다. CLI 도구를 설치하거나 빌드 단계가 완료될 때까지 기다릴 필요가 없습니다.
🔄정확한 타입 변환
TOML to JSON 변환기는 오프셋 날짜/시간, 로컬 날짜, 로컬 시간과 같은 TOML 전용 타입을 ISO 8601 문자열로 보존합니다. 정수와 부동소수점 정밀도가 유지됩니다. 배열 테이블은 JSON 객체 배열로 올바르게 매핑됩니다.
🌐설치 불필요
최신 브라우저가 있는 모든 기기에서 작동합니다. 평소 개발 환경이 없는 기기에서 풀 리퀘스트를 검토할 때나 동료의 TOML 파일을 빠르게 검증해야 할 때 유용합니다.
TOML 도구 사용 사례
TOML 포맷, 검증, 변환은 다양한 역할과 프로젝트 유형에 걸쳐 발생합니다. Rust 개발자는 Cargo.toml을 매일 다룹니다. Python 개발자는 pyproject.toml을 통해 빌드와 도구를 설정합니다. DevOps 엔지니어는 TOML로 제공되는 애플리케이션 설정을 관리합니다. 아래 작업들은 일회성 스크립트 작성이나 CLI 도구 설치에 비해 브라우저 기반 TOML 도구가 시간을 절약하는 상황을 보여줍니다.
Cargo.toml 정리
여러 의존성 추가를 병합한 후, Rust 프로젝트의 Cargo.toml 포맷이 일관되지 않습니다. 커밋 전에
TOML Formatter를 통해 들여쓰기와 키 순서를 정규화하세요.
pyproject.toml을 JSON으로
CI 파이프라인에 JSON 형식의 빌드 메타데이터가 필요하지만 원본은 pyproject.toml입니다.
TOML to JSON Converter를 사용하여 JSON 표현을 생성하고, 파이프라인에 변환을 스크립트로 추가하기 전에 매핑을 확인하세요.
설정 마이그레이션
애플리케이션을 JSON 기반 설정에서 TOML로(또는 그 반대로) 이전하는 경우입니다.
TOML to JSON Converter를 사용하면 두 표현을 나란히 비교하여 데이터 타입, 중첩 구조, 배열 의미론이 보존되는지 확인할 수 있습니다.
구문 디버깅
TOML 설정 파일이 애플리케이션 시작 시 불명확한 오류 메시지와 함께 파싱에 실패합니다.
TOML Formatter에 붙여넣어 구문 오류의 정확한 줄 번호와 열 번호, 파서가 기대한 내용의 설명을 확인하세요.
문서 생성
TOML과 JSON 형식 모두 설정 예시를 포함하는 문서를 작성하는 경우입니다.
TOML to JSON Converter를 통해 표준 TOML 예시를 변환하면 수동 전사 없이 두 버전이 동기화 상태를 유지합니다.
TOML 구문 학습
TOML을 처음 접하는 개발자는
TOML Formatter에서 TOML을 작성하고, 실시간으로 검증 오류를 확인하며, 포맷된 출력과 구조를 비교하여 형식을 익힐 수 있습니다. 명세만 읽는 것보다 훨씬 빠릅니다.
TOML 데이터 타입 참조
TOML v1.0은 다음 데이터 타입을 정의합니다. 각 타입은 JSON으로 변환될 때 특정 표현으로 매핑됩니다. 아래 표는 각 TOML 타입의 구문, 예시, 변환 동작을 다룹니다.
| 타입 | 구문 | 예시 | JSON 매핑 |
|---|
| 문자열 | "..." 또는 '...' | name = "TOML" | JSON 문자열. 기본 문자열은 이스케이프 시퀀스(\n, \t, \u)를 지원합니다. 리터럴 문자열('...')은 백슬래시를 일반 문자로 처리합니다. |
| 정수 | 숫자, 0x, 0o, 0b | port = 8080 | JSON 숫자. 16진수(0xDEAD), 8진수(0o755), 2진수(0b1010), 밑줄 구분자(1_000)를 지원합니다. |
| 부동소수점 | . 또는 e가 있는 숫자 | pi = 3.14159 | JSON 숫자. inf, -inf, nan을 지원합니다(JSON에 NaN이 없으므로 null 또는 문자열로 매핑). |
| 불리언 | true / false | enabled = true | JSON 불리언. 소문자 true와 false만 유효합니다. |
| 오프셋 날짜/시간 | RFC 3339 | 2024-01-15T09:30:00Z | JSON 문자열(ISO 8601). 타임존 오프셋 포함. JSON에 네이티브 날짜/시간 타입이 없습니다. |
| 로컬 날짜/시간 | 날짜 T 시간 | 2024-01-15T09:30:00 | JSON 문자열. 타임존 정보 없음. 로컬 시각에 유용합니다. |
| 로컬 날짜 | YYYY-MM-DD | 2024-01-15 | JSON 문자열. 시간 구성 요소 없는 날짜. |
| 로컬 시간 | HH:MM:SS | 09:30:00 | JSON 문자열. 날짜 또는 타임존 없는 시간. |
| 배열 | [값, ...] | ports = [8080, 8443] | JSON 배열. TOML v1.0에서는 배열이 이종 타입을 허용하지만 v0.5에서는 동종 타입이어야 했습니다. |
| 테이블 | tomlCategoryContent.r10Syntax | [database] | JSON 객체. 표준 테이블은 [대괄호]를 사용합니다. 인라인 테이블은 한 줄에 중괄호를 사용합니다. |
TOML v1.0.0 명세(toml.io)가 현재 안정 버전입니다. 배열 테이블은 [[이중 대괄호]]를 사용하여 반복 테이블 항목을 정의하며, JSON 객체 배열로 매핑됩니다.
올바른 TOML 도구 선택 방법
ToolDeck에는 TOML 파일을 다루는 세 가지 도구가 있습니다. 두 개는 TOML 카테고리에 있고, 하나는 역방향 변환을 위해 JSON 카테고리에 있습니다. 작업에 맞는 도구를 선택하세요.
- 1
필요한 작업이 TOML 파일 재들여쓰기, 키 순서 정규화, 줄 단위 오류 보고로 TOML 구문 검증 → TOML Formatter - 2
필요한 작업이 JSON 입력을 기대하는 API, 스크립트, 도구에서 사용하기 위해 TOML 설정 파일을 JSON으로 변환 → TOML to JSON Converter - 3
필요한 작업이 TOML을 설정 표준으로 사용하는 프로젝트를 위해 JSON 문서를 TOML 형식으로 변환 → JSON to TOML Converter
일상적인 TOML 작업에서 TOML Formatter는 포맷과 검증을 한 번에 처리합니다 — TOML을 붙여넣으면 깔끔한 출력을 생성하거나 구문 오류의 정확한 위치를 알려줍니다. TOML과 JSON을 연결해야 할 때 TOML to JSON Converter는 날짜/시간과 중첩 테이블을 포함한 모든 TOML 데이터 타입을 보존합니다. 역방향(JSON에서 TOML)으로 변환할 때는 JSON 카테고리의 JSON to TOML Converter를 사용하세요. 파싱에 실패하는 설정을 디버깅하고 있다면 TOML Formatter로 시작하세요. 오류 메시지에는 줄 번호와 예상 토큰 설명이 포함되어 있어 대부분의 애플리케이션 수준 TOML 파서가 보고하는 것보다 더 구체적입니다.
자주 묻는 질문
TOML과 YAML의 차이점은 무엇인가요?
TOML은 테이블에 명시적인 대괄호 구문을 사용하며 구조에 들여쓰기를 사용하지 않습니다. YAML은 계층 구조를 정의하는 데 들여쓰기를 사용하므로 공백 오류에 민감합니다 — 잘못 배치된 공백 하나가 파싱된 구조 전체를 바꿀 수 있습니다. TOML은 네이티브 날짜/시간 타입을 가지며 중복 키를 금지하는 반면, YAML은 키가 두 번 나타날 때 마지막 값을 조용히 사용합니다. TOML은 일반적으로 애플리케이션 설정에 선호되며, YAML은 멀티 문서 지원과 앵커/앨리어스가 유용한 Kubernetes 매니페스트와 CI/CD 파이프라인 정의에 더 흔합니다.
TOML과 JSON의 차이점은 무엇인가요?
JSON은 기계 간 통신을 위해 설계된 데이터 교환 형식입니다. TOML은 사람이 읽고 편집하도록 설계된 설정 형식입니다. TOML은 주석(#으로 시작하는 줄), 네이티브 날짜/시간 타입, 멀티라인 문자열, 중첩 깊이를 줄이는 테이블을 지원합니다. JSON은 주석을 지원하지 않고, 날짜 타입이 없으며, 중괄호를 사용한 명시적 중첩이 필요합니다. JSON은 API 페이로드와 데이터 저장에 적합하고, TOML은 사람이 직접 편집하는 설정 파일에 적합합니다.
TOML이 모든 JSON 데이터 구조를 표현할 수 있나요?
TOML은 대부분의 JSON 구조를 표현할 수 있지만 예외 사항이 있습니다. TOML은 null 값을 지원하지 않습니다 — JSON null에 해당하는 TOML 표현이 없습니다. TOML 키는 문자열이어야 하는데, 이는 JSON 객체 키와 일치합니다. TOML 배열은 v0.5에서 동종 타입으로 제한되었지만 TOML v1.0은 혼합 타입 배열을 허용합니다. 깊이 중첩된 JSON 객체는 각 중첩 수준에 별도의 테이블 헤더가 필요하기 때문에 TOML에서 장황해질 수 있습니다.
어떤 프로젝트가 TOML을 설정에 사용하나요?
Rust의 Cargo 빌드 시스템은 Cargo.toml을 패키지 매니페스트로 사용합니다. Python은 PEP 518(2016)과 PEP 621(2020)을 통해 pyproject.toml을 표준 빌드 설정 파일로 채택했습니다. 정적 사이트 생성기 Hugo는 기본적으로 TOML을 사이트 설정에 사용합니다. InfluxDB는 서버 설정에 TOML을 사용합니다. Go 모듈 시스템은 TOML을 검토했지만 자체 형식을 선택했습니다. 그러나 많은 Go 프로젝트는 BurntSushi/toml 및 pelletier/go-toml과 같은 라이브러리를 통해 애플리케이션 수준 설정에 여전히 TOML을 사용합니다.
TOML에서 주석은 어떻게 처리되나요?
TOML은 # 문자를 사용한 전체 줄 주석과 줄 끝 주석을 지원합니다. #부터 줄 끝까지의 모든 내용은 파서가 무시합니다. 주석은 멀티라인 기본 문자열이나 멀티라인 리터럴 문자열 내부에 올 수 없습니다. TOML을 JSON으로 변환할 때 JSON에 주석 구문이 없으므로 주석은 삭제됩니다. 이는 TOML에서 JSON으로 다시 TOML로 왕복 변환하면 원본 파일의 모든 주석이 손실됨을 의미합니다.
TOML에서 배열 테이블이란 무엇인가요?
배열 테이블은 [[이중 대괄호]] 구문을 사용하여 동일한 테이블 구조의 반복 항목을 정의합니다. 예를 들어 [[servers]]가 두 번 나타나면 두 개의 서버 객체를 가진 배열이 생성됩니다. JSON에서 이는 객체 배열로 매핑됩니다. 배열 테이블은 각 항목이 동일한 키 집합을 가지는 의존성 목록, 서버 정의, 플러그인 설정에 일반적으로 사용됩니다.
TOML은 공백에 민감한가요?
TOML은 들여쓰기에 민감하지 않습니다. 들여쓰기는 순전히 시각적이며 파싱에 영향을 주지 않습니다. 그러나 TOML은 키-값 쌍을 구분하기 위해 줄 바꿈을 요구합니다 — 인라인 테이블 내부를 제외하고 두 키-값 쌍을 같은 줄에 배치할 수 없습니다. 인라인 테이블은 한 줄에 들어가야 하며 줄 바꿈을 포함할 수 없습니다. 이 설계는 YAML 파일에서 흔히 발생하는 들여쓰기 기반 버그를 방지합니다.
TOML 날짜/시간 값은 JSON으로 변환할 때 어떻게 처리되나요?
JSON에는 네이티브 날짜/시간 타입이 없으므로 TOML 날짜/시간은 ISO 8601 문자열로 변환됩니다. 오프셋 날짜/시간(예: 2024-01-15T09:30:00Z)은 문자열 표현에 타임존 오프셋을 유지합니다. 로컬 날짜/시간, 로컬 날짜, 로컬 시간은 각각 타임존 정보 없이 문자열로 직렬화됩니다. 원본 값을 문자열에서 다시 파싱할 수 있다는 의미에서 변환은 무손실이지만, JSON 소비자는 이 문자열이 임의의 텍스트가 아닌 날짜임을 인지해야 합니다.