TOML → JSON 변환기
왼쪽에 TOML을 붙여넣으면 오른쪽에 JSON으로 변환돼요. 테이블은 객체로, 테이블 배열은 배열로 변환됩니다. 모든 처리는 브라우저 안에서 진행되며 업로드가 없어요.
- 왼쪽 텍스트 영역에 TOML을 붙여넣어 주세요.
- "JSON으로 변환" 버튼을 누르면 테이블 중첩이 그대로 보존된 JSON 객체가 만들어져요.
- 결과를 복사하거나 data.json 파일로 저장할 수 있어요.
- 날짜 값은 ISO 8601 문자열로, 숫자의 밑줄 구분자는 제거되어 변환됩니다.
어떤 도구인가요?
TOML 1.0 문서를 JSON 객체로 파싱합니다. `[section]` 테이블은 중첩된 객체가 되고, `[[items]]` 테이블 배열은 JSON 배열이 돼요. 문자열, 정수(16진수/8진수/2진수 리터럴 및 자릿수 구분 밑줄 포함), 부동소수, 부울, 날짜, 날짜시간, 시간 모두 JSON에 대응되는 표현으로 변환됩니다. 인라인 테이블과 인라인 배열도 같은 방식으로 평탄화돼요.
예시
TOML 입력:
name = "Ada"
active = true
[address]
city = "London" JSON 출력:
{
"name": "Ada",
"active": true,
"address": {
"city": "London"
}
} 자주 만나는 TOML 오류와 해결 방법
TOML은 일부 규칙이 YAML이나 JSON보다 엄격해요. 파서가 거부할 때 살펴봐야 할 패턴들입니다.
- 따옴표 없는 문자열. `name = Ada` 는 잘못됐어요 — 따옴표 없는 값은 키/부울/숫자로 해석되지 문자열이 되지 않습니다. 큰따옴표를 사용하세요: `name = "Ada"`.
- 혼합 타입 배열 (TOML 0.x). TOML 0.5 까지는 배열 내 혼합 타입을 금지했지만 TOML 1.0 부터 허용해요. @iarna/toml은 1.0 을 따르므로 `[1, "two"]` 가 유효합니다. 0.5 도구를 거쳐야 하는 TOML이라면 배열의 타입을 통일하세요.
- 테이블 재정의. `[a]` 를 두 번 정의하는 건 오류예요. 같은 테이블 헤더는 최대 한 번만 등장해야 합니다. 키들을 단일 `[a]` 블록으로 합쳐 주세요.
- 시간대 없는 날짜시간. `d = 2026-04-26T12:00:00` (Z나 오프셋 없음) 은 "지역 날짜시간" 으로 파싱되지만 JSON에는 지역성 개념이 없어요. 출력은 같은 문자열(벽시계 시간)이며 UTC 인스턴트가 아닙니다. UTC 가 필요하면 `Z` 를 붙이세요: `d = 2026-04-26T12:00:00Z`.
- 트리플 쿼트 이스케이프 혼동. TOML 의 기본 다중 행 문자열은 `"""..."""` 로 이스케이프를 처리하지만, 리터럴 다중 행 문자열은 `\'\'\'...\'\'\'` 로 처리하지 않아요. 이스케이프 규칙을 섞으면 가장 흔한 다중 행 문자열 오류가 발생합니다.
- 인라인 테이블 확장. 인라인 테이블 `point = {x=1, y=2}` 은 닫혀 있고 자기 완결적이라, 나중에 `[point.z]` 나 `point.z = 3` 로 확장할 수 없어요. 확장이 필요하면 처음부터 표준 `[point]` 블록 문법을 사용하세요.
자주 묻는 질문
날짜시간은 JSON에서 어떻게 표현되나요?
JSON에는 네이티브 날짜시간 타입이 없어서 ISO 8601 문자열이 됩니다. 오프셋 날짜시간(`2026-04-26T12:00:00Z`)과 지역 날짜시간(`2026-04-26T12:00:00`) 모두 문자열로 직렬화되지만 JSON에서 모호하지 않은 건 오프셋 형식뿐이에요.
정수의 밑줄 구분자는 보존되나요?
아니요 — TOML은 가독성을 위해 `1_000_000` 같은 표기를 허용하지만, 파서가 밑줄을 제거하므로 JSON 값은 `1000000` 이 됩니다. 자릿수 구분은 TOML 소스 텍스트에서만 의미가 있어요.
TOML 주석은 어떻게 되나요?
제거됩니다. TOML 주석은 `#` 로 시작하지만 JSON에는 주석 문법이 없어서 파서가 폐기해요. 주석 보존이 필요하면 다른 중간 형식을 사용해야 합니다.
테이블 배열도 지원되나요?
네. 여러 번 반복되는 `[[products]]` 블록은 `products` 키 아래의 JSON 배열이 돼요. 각 `[[products]]` 헤더가 새 배열 항목을 시작하고, 이후 키-값 라인이 그 항목을 채웁니다.
아주 큰 TOML 파일도 변환되나요?
약 30 MB 까지는 무리 없이 동작해요. 그 이후로는 텍스트 영역이 느려져요. 대부분의 설정 파일은 1 MB 미만이라 실무에서는 거의 발생하지 않는 케이스입니다.
TOML이 어디론가 업로드되나요?
아니요. 모든 처리는 브라우저 안에서 진행돼요. 변환 버튼을 눌러도 어떤 서버에도 데이터가 전송되지 않습니다.