TOML to JSON 변환기
TOML을 브라우저에서 즉시 JSON으로 변환하는 온라인 도구. Cargo.toml·pyproject.toml·config.toml 지원, 날짜와 중첩 테이블 정확 처리. 100% 비공개, 업로드 없음.
옵션 · 2칸
TOML이란 무엇이며 왜 JSON으로 변환하나요?
TOML(Tom's Obvious, Minimal Language)은 Tom Preston-Werner가 명확하고, 사람이 읽기 쉽고, 해시 테이블로 손쉽게 매핑되도록 만든 구성 파일 형식입니다. Rust 생태계(Cargo.toml), 현대 Python 패키징(PEP 518과 PEP 621로 표준화된 pyproject.toml), 그리고 Hugo, Netlify, Poetry, Foundry 같은 도구의 기본 구성 형식이 되었습니다. 반면 JSON은 보편적인 기계 교환 형식으로, 모든 언어가 파싱하고 모든 API가 사용합니다. 따라서 TOML을 JSON으로 변환하는 것은 흔한 작업입니다: 읽기 쉬운 TOML로 구성을 작성한 다음 JSON으로 변환하여 프로그램에 넣거나, JSON 도구로 확인하거나, 파이프라인에서 비교합니다.
이 도구에는 정확성 측면에서 중요한 여러 차별점이 있습니다:
**1. 날짜-시간 충실도.** TOML에는 일급 날짜·시간 타입 — 오프셋 date-time, 로컬 date-time, 로컬 date, 로컬 time — 이 있으나 JSON에는 전혀 없습니다. 단순한 변환기는 이를 모두 ISO 타임스탬프로 뭉개므로, 1979-05-27 같은 로컬 date가 1979-05-27T00:00:00Z가 되어 조용히 시간과 시간대를 지어냅니다. 이 도구는 정확한 TOML 종류를 보존합니다: 로컬 date는 달력 날짜로, 로컬 time은 시간으로 남고, 오프셋 date-time만 시간대를 갖습니다. 그래서 데이터가 정직하게 유지되고 왕복 변환이 무손실입니다.
**2. 전체 TOML 1.0.0 지원.** 중첩 테이블, 점 표기 키, 인라인 테이블, 테이블 배열([[section]])이 무의존성 smol-toml 라이브러리를 사용해 TOML 1.0.0 명세에 따라 모두 정확히 파싱됩니다. 인라인 테이블과 표준 테이블이 섞인 실제 Cargo.toml과 pyproject.toml 파일이 명세가 요구하는 그대로 정확히 변환됩니다.
**3. 정직한 큰 정수 처리.** TOML 정수는 64비트이지만 브라우저 JavaScript는 정수를 2^53 - 1까지만 정확히 담을 수 있습니다. 이 도구는 큰 값을 조용히 손상시키거나 충돌하는 대신, 가장 가까운 JSON 숫자로 변환하고 경고를 보내 값을 문자열로 저장하도록 선택할 수 있게 합니다. 근본적인 브라우저 한계에 대한 이런 정직함은 대부분의 변환기가 얼버무리는 부분입니다.
**4. 100% 브라우저 기반 프라이버시.** 레지스트리 토큰, 내부 패키지 소스, 배포 비밀 값이 담겼을 수 있는 당신의 TOML은 절대 브라우저를 떠나지 않습니다. 업로드 없음, 서버 없음, 로깅 없음. 브라우저의 네트워크 탭에서 확인할 수 있습니다.
반대 방향이 필요하신가요? JSON to TOML 변환기를 사용하세요. 다른 구성 형식 간 변환이신가요? JSON to YAML 변환기와 YAML to JSON 변환기를 사용하거나, JSON 포매터로 JSON 출력을 먼저 검증하고 예쁘게 정리하세요. TOML, JSON, YAML은 각각 쓰임새가 있습니다: TOML은 사람이 편집하는 애플리케이션 구성, JSON은 기계 교환, YAML은 깊이 중첩된 인프라 매니페스트에 적합합니다. 이 변환기로 코드 한 줄 없이 앞의 두 형식 사이를 오갈 수 있습니다.
// Convert TOML to JSON in Node.js using the smol-toml library
import { parse } from 'smol-toml';
const toml = `
[package]
name = "my-app"
version = "1.0.0"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
`;
const data = parse(toml);
const json = JSON.stringify(data, null, 2);
console.log(json);
// {
// "package": { "name": "my-app", "version": "1.0.0" },
// "dependencies": {
// "serde": { "version": "1.0", "features": ["derive"] }
// }
// } 주요 기능
실시간 변환
TOML을 입력하거나 붙여넣는 즉시 JSON 출력이 갱신됩니다 — Convert 버튼이 필요 없습니다. 큰 입력(>200KB)은 브라우저 반응성을 유지하기 위해 자동으로 수동 모드로 전환됩니다.
날짜-시간 충실도
TOML의 오프셋 date-time, 로컬 date-time, 로컬 date, 로컬 time이 원래 종류를 보존하는 JSON 문자열로 변환됩니다 — 지어낸 자정 타임스탬프 없이 왕복 변환이 무손실로 유지됩니다.
전체 TOML 1.0.0 지원
중첩 테이블, 점 표기 키, 인라인 테이블, 테이블 배열([[section]])이 무의존성 smol-toml 엔진을 통해 TOML 1.0.0 명세에 맞게 모두 정확히 파싱됩니다.
Cargo.toml 및 pyproject.toml 대응
실제로 가장 흔한 TOML 파일 — Rust 매니페스트와 Python 패키징 설정 — 에 최적화되어 있으며 인라인 테이블과 테이블 배열을 포함합니다. 예시를 불러와 정확한 JSON 구조를 확인하세요.
정직한 큰 정수 경고
JavaScript의 안전 범위(2^53)를 넘는 정수는 JSON에서 정확히 표현할 수 없습니다 — 도구는 값을 조용히 손상시키는 대신 가장 가까운 숫자로 변환하고 경고합니다.
100% 브라우저 기반 프라이버시
모든 파싱이 브라우저에서 로컬로 실행됩니다. 레지스트리 토큰, 비공개 패키지 소스, 배포 비밀 값을 포함한 당신의 TOML은 절대 업로드, 저장, 기록되지 않습니다.
예시
Cargo.toml (Rust)
[package]
name = "my-app"
version = "1.0.0"
edition = "2021"
authors = ["Jane Doe <jane@example.com>"]
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
[dev-dependencies]
criterion = "0.5"
[[bin]]
name = "my-app"
path = "src/main.rs" Rust의 Cargo.toml 매니페스트를 JSON으로 변환합니다 — 도구 연동, 의존성 대시보드, 또는 JSON을 기대하는 스크립트에 cargo 메타데이터를 넣을 때 유용합니다.
pyproject.toml (Python)
[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "my-package" version = "0.3.1" requires-python = ">=3.10" dependencies = [ "requests>=2.31", "pydantic>=2.0" ] [project.optional-dependencies] dev = ["pytest>=8.0", "ruff>=0.4"] [tool.ruff] line-length = 100
PEP 621 pyproject.toml을 JSON으로 변환하여 프로젝트 메타데이터, 의존성, 도구 설정을 프로그래밍 방식으로 확인합니다.
netlify.toml
[build] command = "npm run build" publish = "dist" [build.environment] NODE_VERSION = "20" [[redirects]] from = "/old-path" to = "/new-path" status = 301 force = true [[headers]] for = "/*" [headers.values] X-Frame-Options = "DENY"
Netlify 빌드 설정을 JSON으로 변환하여 리다이렉트와 헤더를 점검하거나 다른 플랫폼용 설정을 생성합니다.
Hugo config.toml
baseURL = "https://example.org" languageCode = "en-us" title = "My Hugo Site" theme = "ananke" [params] description = "A static site built with Hugo" mainSections = ["posts", "docs"] [[menu.main]] name = "Blog" url = "/posts/" weight = 1 [[menu.main]] name = "About" url = "/about/" weight = 2
Hugo 사이트 config.toml을 JSON으로 변환하여 설정을 마이그레이션하거나, 구성을 비교하거나, 설정 UI를 구동합니다.
rustfmt.toml
edition = "2021" max_width = 100 hard_tabs = false tab_spaces = 4 newline_style = "Unix" use_small_heuristics = "Default" reorder_imports = true reorder_modules = true
플랫한 rustfmt.toml을 JSON으로 변환합니다 — 최상위 키-값 쌍(테이블 없음)이 JSON 객체로 직접 매핑되는 좋은 예시입니다.
날짜와 테이블 배열이 포함된 앱 설정
title = "Deployment Log" last_deployed = 1979-05-27T07:32:00Z release_date = 1979-05-27 maintenance_window = 02:00:00 [[servers]] name = "alpha" ip = "10.0.0.1" ports = [8001, 8002] [[servers]] name = "beta" ip = "10.0.0.2" ports = [9001]
TOML의 기본 날짜-시간(오프셋 date-time, 로컬 date, 로컬 time)과 테이블 배열이 JSON 문자열과 배열로 깔끔하게 변환되는 방식을 보여줍니다.
사용 방법
- 1
TOML 붙여넣기
위 입력 필드에 TOML을 입력하거나 붙여넣으세요. 'Load example'을 클릭해 실제 Cargo.toml, pyproject.toml, 배포 설정을 시험해 볼 수도 있습니다.
- 2
실시간 JSON 출력 보기
출력 패널에 JSON이 즉시 나타납니다. 대상 형식에 맞춰 들여쓰기(Indent) 옵션(2칸 또는 4칸)을 조정하세요. 날짜, 테이블, 테이블 배열은 자동으로 처리됩니다.
- 3
복사 또는 다운로드
Copy를 클릭해 JSON을 클립보드에 담거나, Download를 클릭해 프로그램, API, 도구에 쓸 준비가 된 .json 파일로 저장하세요.
흔한 TOML 함정
따옴표 없는 문자열 값
TOML에서 문자열 값은 반드시 따옴표로 감싸야 합니다. 등호 오른쪽의 맨 단어는 불리언(true/false), 숫자, 날짜, 또는 배열의 일부일 때만 유효합니다. 문자열은 큰따옴표나 작은따옴표로 감싸세요.
name = my-app
name = "my-app"
중복 키
TOML은 같은 테이블 안에서 같은 키를 두 번 정의하는 것을 금지하며, 이미 정의된 테이블을 다시 정의하는 것도 금지합니다. 구성 조각을 병합할 때 흔한 오류입니다. 각 키와 테이블은 고유해야 합니다.
name = "a" name = "b"
name = "a" alt_name = "b"
잘못된 날짜-시간 형식
TOML 날짜-시간은 RFC 3339를 따릅니다. 날짜는 4자리 연도, 2자리 월, 2자리 일이 온전히 필요하고, 날짜-시간은 T(또는 공백) 구분자가 필요합니다. 형식이 잘못된 날짜는 파싱에 실패합니다.
released = 2026-7-2
released = 2026-07-02
닫는 대괄호 누락
배열, 인라인 테이블, 테이블 헤더는 반드시 닫아야 합니다. 닫히지 않은 [ 또는 {는 문제가 감지된 줄과 열을 가리키는 파싱 오류를 일으킵니다.
ports = [8001, 8002
ports = [8001, 8002]
안전 범위를 넘는 정수
TOML 정수는 64비트이지만 브라우저의 JSON 숫자는 2^53 - 1로 제한됩니다. 그 범위를 넘는 값은 변환 중 반올림되고 경고가 표시됩니다. 매우 큰 정수는 정확하게 유지하려면 따옴표로 감싼 문자열로 저장하세요.
snowflake = 1420070400000000000
snowflake = "1420070400000000000"
테이블 재정의
[servers] 같은 테이블은 한 번 정의되면 같은 헤더로 다시 열 수 없습니다. 여러 항목을 두려면 대신 테이블 배열([[servers]])을 사용하세요. 이는 객체의 JSON 배열이 됩니다.
[servers] name = "a" [servers] name = "b"
[[servers]] name = "a" [[servers]] name = "b"
일반적인 사용 사례
- Rust Cargo 메타데이터
- Cargo.toml을 JSON으로 변환하여 의존성 대시보드를 만들고, 크레이트 버전과 기능을 감사하거나, TOML이 아닌 JSON을 기대하는 스크립트와 CI에 매니페스트 데이터를 넣으세요.
- Python 프로젝트 구성
- pyproject.toml을 JSON으로 변환하여 PEP 621 프로젝트 메타데이터를 확인하고, 의존성 목록을 추출하거나, 패키징 구성을 프로그래밍 방식으로 읽는 도구를 구동하세요.
- 배포 구성 점검
- netlify.toml, foundry.toml, 또는 기타 플랫폼 설정을 JSON으로 변환하여 리다이렉트, 헤더, 빌드 설정을 감사하거나 다른 플랫폼용 동등 설정을 생성하세요.
- 구성 형식 마이그레이션
- JSON을 선호하는 시스템으로 옮길 때 TOML 애플리케이션 구성을 JSON으로 변환하거나, jq 같은 JSON 도구로 더 변형하기 전 중간 단계로 사용하세요.
- 정적 사이트 설정
- Hugo config.toml을 JSON으로 변환하여 사이트 설정을 마이그레이션하고, 환경 간 구성을 비교하거나, JSON을 기반으로 하는 설정 UI를 만드세요.
- API 및 스크립트 입력
- 사람이 작성한 TOML을 REST API, 서버리스 함수, 자동화 스크립트가 직접 소비할 수 있는 JSON으로 바꿔, 읽기 쉬운 구성과 기계 입력을 이어주세요.
기술 세부 정보
- smol-toml을 통한 TOML 1.0.0 파싱
- TOML은 무의존성이며 완전히 TOML 1.0.0을 준수하는 파서인 smol-toml 라이브러리로 파싱됩니다. 중첩 테이블, 점 표기 키, 인라인 테이블, 테이블 배열, 여러 줄 문자열, 네 가지 날짜-시간 타입을 모두 정확히 처리하며, 파싱 오류를 줄과 열 위치와 함께 보고합니다.
- 무손실 날짜-시간 및 안전한 정수 처리
- TOML 날짜-시간은 정확한 종류(오프셋 date-time, 로컬 date-time, 로컬 date, 로컬 time)를 보존하는 JSON 문자열로 직렬화됩니다. JavaScript의 안전 범위(2^53 - 1)를 넘는 정수는 파싱 중 BigInt로 승격된 다음 정밀도 경고와 함께 가장 가까운 JSON 숫자로 변환되므로, 유효한 TOML이 변환에 실패하는 일이 없습니다.
- 100% 브라우저 기반 — 업로드 없음, 서버 없음
- 모든 처리가 브라우저의 JavaScript 엔진에서 이루어집니다. 어떤 시점에도 데이터가 전송되지 않습니다. 200KB보다 큰 입력은 인터페이스 반응성을 유지하기 위해 실시간에서 수동 모드(명시적 Convert 클릭)로 전환됩니다.
모범 사례
- 매우 큰 정수는 문자열로 저장하기
- TOML에 2^53 - 1을 넘는 정수(Snowflake ID, 나노초 타임스탬프, 큰 카운터)가 있으면 변환 전에 따옴표로 감싸 문자열로 만드세요. 브라우저의 JSON 숫자는 이를 정확히 담을 수 없으며, 반올림해야 할 때 도구가 경고합니다.
- JSON 출력에는 2칸 들여쓰기 선호하기
- 두 칸 들여쓰기는 JSON에서 가장 널리 쓰이는 관례이며, 대부분의 포매터와 비교 도구와 잘 어울리는 깔끔하고 읽기 쉬운 출력을 만듭니다. 4칸 들여쓰기는 스타일 가이드가 요구할 때를 위해 남겨 두세요.
- 사용하기 전에 JSON 출력 검증하기
- 변환 후 JSON을 손으로 편집하거나 엄격한 곳에 넣을 계획이라면 JSON 포매터에 통과시켜 유효하고 일관되게 형식화되었는지 확인하세요.
- TOML 주석은 따로 보관하기
- JSON에는 주석 문법이 없으므로 TOML의 # 주석은 변환 시 삭제됩니다. 주석이 중요한 문서라면 생성된 JSON과 함께 버전 관리에 원래 TOML을 보관하세요.
- 반복되는 섹션에는 테이블 배열 사용하기
- 유사한 섹션이 여러 개(서버, 리다이렉트, 바이너리) 있을 때는 [section]을 반복하기보다 테이블 배열([[section]])로 작성하세요. 중복 테이블 오류를 일으키는 대신 깔끔한 객체의 JSON 배열로 변환됩니다.
자주 묻는 질문
온라인에서 TOML을 JSON으로 어떻게 변환하나요?
TOML이란 무엇이며 왜 JSON으로 변환하나요?
TOML의 날짜와 시간은 JSON에서 어떻게 표현되나요?
이 도구는 Cargo.toml과 pyproject.toml을 처리하나요?
TOML 테이블과 테이블 배열은 어떻게 변환되나요?
TOML을 JSON으로 변환할 때 매우 큰 정수는 어떻게 되나요?
내 TOML 데이터가 서버로 전송되나요?
JSON을 다시 TOML로 변환할 수 있나요?
명령줄에서 TOML을 JSON으로 어떻게 변환하나요?
Python, Rust, Node.js에서 TOML을 JSON으로 어떻게 변환하나요?
변환기가 키 순서를 보존하나요? 주석은 어떻게 되나요?
TOML 입력에 파일 크기 제한이 있나요?
관련 도구
모든 도구 보기 →Base64 디코더 · 인코더 (Base64 Decoder & Encoder)
인코딩 & 포매팅
Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.
Base64 이미지 변환기 (온라인)
인코딩 & 포매팅
Base64 문자열이나 데이터 URI를 온라인 브라우저에서 이미지로 디코딩합니다. 미리보고, 치수와 MIME을 읽은 뒤 PNG, JPG, GIF, SVG로 다운로드하세요. 업로드 없음.
CSV to JSON 변환기 (CSV to JSON Converter)
인코딩 & 포매팅
브라우저에서 CSV를 JSON으로 변환합니다. RFC 4180, 타입 추론, 헤더 행, 큰 정수 안전 처리. 100% 비공개, 업로드 없음.
.env을 JSON으로 변환하는 도구
인코딩 & 포매팅
.env 파일을 붙여넣으면 즉시 JSON으로 변환됩니다. 데이터베이스 비밀번호, API 키, 토큰이 브라우저를 절대 벗어나지 않는 100% 비공개 무료 온라인 dotenv 파서입니다.
무료 HTML 엔티티 디코더 — HTML 언이스케이프
인코딩 & 포매팅
온라인에서 HTML 엔티티를 디코딩하고 HTML을 언이스케이프하세요. 무료, 가입 불필요, 100% 브라우저에서 처리. 이름·10진수·16진수 참조를 문자로 되돌리며 업로드 없음.
무료 HTML 엔티티 인코더 — HTML 이스케이프
인코딩 & 포매팅
온라인에서 HTML 엔티티를 인코딩하고 특수문자(< > & " ')를 이스케이프하세요. 무료, 100% 브라우저에서 처리. 이름·10진수·16진수 출력, 업로드 없음.