TOML to JSON
Rust의 Cargo.toml, Python의 pyproject.toml, Hugo의 config.toml: 현대 설정 파일의 세계에서 TOML은 어디에나 있지만, 여전히 JSON만 읽는 도구도 많습니다. 여기에 TOML을 붙여 넣으면 보기 좋게 정렬된 JSON을 돌려받습니다. [테이블] 섹션은 중첩 객체가 되고, [[테이블 배열]] 블록은 객체 배열이 되며, 날짜는 쓴 그대로 문자열로 통과합니다. 이 파서는 TOML의 일상적인 핵심을 다루며, 실제 한계(여러 줄 값, 인라인 테이블, 점 표기 키)는 아래에 숨김없이 정리했습니다.
변환 동작 방식
-
1
TOML 붙여 넣기
입력창에 텍스트를 넣고 JSON으로 변환을 누릅니다. 한 줄 전체를 차지하는 # 주석은 자동으로 건너뜁니다.
-
2
테이블은 객체가 됩니다
`[server.database]` 헤더는 점으로 구분된 이름마다 한 단계씩 중첩된 JSON 객체가 됩니다.
-
3
테이블 배열은 배열이 됩니다
`[[users]]` 블록은 블록마다 객체 하나씩 담긴 JSON 배열을 만듭니다.
-
4
스칼라 값은 타입을 유지합니다
따옴표로 감싼 문자열, 단순 십진 정수와 소수, true/false는 JSON 기본 타입으로 변환되고, 날짜는 쓴 그대로 문자열로 남습니다.
-
5
JSON 복사
결과는 스페이스 4칸 들여쓰기로 정렬되고, 키는 원래 순서를 유지하며, 바로 복사할 수 있습니다.
타입 매핑
| TOML 값 | JSON 값 | 예시 |
|---|---|---|
| 문자열(기본 또는 리터럴) | 문자열 | "hello" → "hello" |
| 정수(단순 십진) | 숫자 | 42 → 42 |
| 소수(단순 십진) | 숫자 | 3.14 → 3.14 |
| 불리언 | 불리언 | true → true |
| 배열(한 줄) | 배열 | [1, 2, 3] → [1, 2, 3] |
| 키가 있는 테이블 | 객체 | [server] + port = 8080 → "server": {"port": 8080} |
| 테이블 배열 | 객체 배열 | [[users]] + name = "alice" → "users": [{"name": "alice"}] |
| 날짜/시간 | 문자열(쓴 그대로) | 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z" |
출력은 항상 스페이스 4칸 들여쓰기로 정렬되므로 배열과 객체는 여러 줄에 걸쳐 표시됩니다. 위 표는 읽기 쉽도록 값을 한 줄로 보여 준 것입니다. 키 순서는 TOML에 적힌 순서 그대로 유지됩니다.
전체 예시
title = "My App"
[server]
host = "localhost"
port = 8080
[[users]]
name = "alice"
admin = true
는 다음과 같이 변환됩니다.
{
"title": "My App",
"server": {
"host": "localhost",
"port": 8080
},
"users": [
{
"name": "alice",
"admin": true
}
]
}
지원하는 TOML과 실제 한계
지원: 점 표기 섹션 이름을 포함한 [테이블] 헤더, [[테이블 배열]], 한 줄 key = value 쌍, \n, \t, \" 이스케이프를 지원하는 기본 문자열 "...", 리터럴 문자열 '...', 단순 십진 정수와 소수, true/false, 한 줄 배열(중첩 가능), 한 줄 전체 # 주석, 문자열로 통과하는 날짜.
지원하지 않는 항목과 대처 방법:
- 여러 줄 문자열(
"""또는''')과 여러 줄 배열은 파서가 오류로 멈춥니다. 값을 먼저 한 줄로 합치세요. - 인라인 테이블은 펼쳐지지 않습니다:
point = { x = 1, y = 2 }는 객체가 아니라 문자열"{ x = 1, y = 2 }"로 나옵니다. 별도의[point]섹션으로 고쳐 쓰세요. Cargo.toml의 의존성 줄serde = { version = "1.0" }이 전형적인 사례입니다. - 등호 왼쪽의 점 표기 키는 평평한 키 하나로 남습니다:
server.host = "a"는 중첩되지 않고"server.host"라는 키를 만듭니다. 대신[server]헤더를 사용하세요. 헤더 안의 점 표기[section.names]는 올바르게 중첩됩니다. - 값 뒤의 주석은 제거되지 않습니다:
port = 8080 # main은 문자열"8080 # main"이 됩니다. 주석은 별도 줄에 두세요. - 단순 십진을 넘는 숫자 형식은 인식되지 않습니다:
1_000,0xFF,5e2,+99,inf,nan은 따옴표로 감싼 문자열로 나옵니다.1000,255,500,99로 적으세요. - 기본 문자열의
\uXXXX이스케이프는 디코딩되지 않습니다. 실제 문자를 직접 붙여 넣으세요.
완전한 TOML 1.0 문서라면 toml2json 같은 명령줄 변환기를 쓰거나, Python의 tomllib으로 파일을 읽어 JSON으로 내보내세요.
이런 곳에 유용합니다
- 디버깅 중 TOML 조각을 JSON으로 빠르게 확인할 때.
- JSON만 받는 린터, 스크립트, 인벤토리 도구에 간단한 설정 값을 전달할 때.
- 손으로 쓰기 편한 TOML 메모에서 테스트용 JSON 픽스처를 생성할 때.
- 작고 평평한 설정 파일 이전. Hugo의
config.toml상당수가 여기에 해당합니다.
왕복 변환 참고 사항
- 주석은 절대 남지 않습니다: JSON에는 주석 문법 자체가 없습니다.
- 날짜는 문자열로 남습니다: 이후 코드에서 날짜 객체로 다시 파싱해야 합니다.
- 큰 숫자: JSON 텍스트 안에서 정수는 64비트 값으로 유지되지만, JavaScript 소비자는 2^53을 넘으면 정밀도를 잃습니다. 나노초 타임스탬프와 숫자 ID에 주의하세요.
- 키 순서는 이 변환기에서는 쓴 그대로 유지됩니다. 다른 JSON 도구는 문서를 다시 출력할 때 키를 재정렬할 수 있습니다.
반대 방향
JSON → TOML이 더 어려운 여정입니다. JSON에는 TOML에 없거나 다르게 다루는 구조(깊은 익명 중첩, null)가 있기 때문입니다. 왕복 시나리오 대부분은 TOML 쪽에서 손으로 다듬어야 합니다.
자주 묻는 질문
아니요. JSON에는 주석 문법이 없어서 한 줄 전체 # 주석은 그대로 건너뜁니다. 주의할 점: 값 뒤에 붙은 주석은 제거되지 않아 port = 8080 # main은 문자열 “8080 # main”이 됩니다. 변환 전에 주석을 별도 줄로 옮기세요.
아니요. 일상적인 핵심만 다룹니다. 점 표기 섹션 이름의 테이블, 테이블 배열, 한 줄 key = value 쌍, 따옴표 문자열, 단순 십진 숫자, 불리언, 한 줄 배열, 한 줄 전체 주석입니다. 여러 줄 문자열과 배열, 인라인 테이블, 점 표기 키, 1_000이나 0xFF 같은 숫자 형식은 지원하지 않습니다. 전체 사양 문서에는 toml2json이나 Python의 tomllib 같은 CLI 도구를 사용하세요.
일반적인 설정 파일은 즉시 변환됩니다. 변환은 저희 서버에서 실행되므로 아주 큰 문서는 요청 크기 제한을 받습니다. 수 메가바이트급 TOML에는 명령줄 변환기가 더 적합합니다.
네, 이 변환기는 서버에서 동작합니다. TOML은 HTTPS로 저희 서버에 전송되어 그곳에서 변환된 뒤 같은 응답으로 돌아옵니다. 내용은 이후 저장되지 않으며 익명 사용 횟수만 기록됩니다. 비밀번호나 API 키 같은 비밀 정보는 붙여 넣지 마세요.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
FPS 카운터
requestAnimationFrame으로 브라우저 FPS를 측정하세요. 스무딩, 최소/최대 프레임레이트, 경고 임계값, 선택형 그래프를 제공합니다. 업로드나 API 없이 로컬에서 실행됩니다.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
색상 혼합기
두 HEX 색상을 2-20개의 균등한 색상 견본으로 섞습니다. 양 끝 색상을 포함해 각 중간 색상을 대문자 HEX 코드로 확인하세요.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
ASCII 이진수 변환기
ASCII 문자열을 이진수 표현으로 변환하세요. 각 문자는 8비트가 되고 공백으로 구분되어 프로토콜 추적이나 과제에 바로 붙여넣기 좋습니다.
이 도구는 다른 언어로도 제공됩니다
- TOML เป็น JSON [TH]
- TOML a JSON [ES]
- TOML na JSON [PL]
- TOMLからJSONへ [JA]
- TOML para JSON [PT]
- TOML till JSON [SV]
- TOML sang JSON [VI]
- من TOML إلى JSON [AR]
- TOML en JSON [FR]
- TOML zu JSON [DE]
- TOML ke JSON [ID]
- TOML naar JSON [NL]
- TOML'dan JSON'a [TR]
- TOML 至 JSON [ZH]
- TOML to JSON [EN]
- TOML in JSON [IT]
- TOML в JSON [RU]