ToolDeck

TOML to JSON 변환기

TOML을 JSON 형식으로 변환

예시 시도

TOML 입력

JSON 출력

로컬에서 실행 · 시크릿 붙여넣기 안전
JSON 출력이 여기에 표시됩니다…
이것도 써보세요:TOML 포매터

TOML to JSON 변환이란?

TOML(Tom's Obvious Minimal Language)은 사람이 읽기 쉽도록 설계된 설정 파일 형식입니다. 해시 테이블에 명확하게 매핑되며, 중첩 테이블, 타입이 지정된 값, 인라인 주석을 지원합니다. 많은 도구와 프레임워크가 TOML을 기본 설정 형식으로 사용합니다. Rust 프로젝트는 Cargo.toml에 의존하고, Python 패키징은 pyproject.toml을 사용하며, Hugo 정적 사이트는 config.toml로 구성됩니다. TOML to JSON 온라인 변환을 사용하면 이러한 설정 파일을 거의 모든 프로그래밍 언어, API, 데이터 파이프라인이 기본적으로 처리할 수 있는 형식으로 변환할 수 있습니다.

JSON(JavaScript Object Notation)은 RFC 8259로 정의된, 가장 널리 지원되는 데이터 교환 형식입니다. TOML이 최소한의 문법과 주석 지원으로 사람의 가독성을 우선시하는 반면, JSON은 기계 간 상호운용성을 우선시합니다. TOML to JSON 변환기는 TOML v1.0.0 사양에 따라 TOML 입력을 파싱하고, 구조적으로 동등한 JSON 문서를 생성하여 이 간극을 연결합니다. 변환 시 모든 데이터가 보존됩니다. 문자열, 정수, 부동소수점, 불리언, 배열, 테이블이 각각 JSON의 대응 타입으로 직접 매핑됩니다.

TOML에는 JSON으로 직접 표현할 수 없는 네 가지 기본 날짜/시간 타입이 있습니다. 오프셋 날짜-시간, 로컬 날짜-시간, 로컬 날짜, 로컬 시간이 그것입니다. JSON에는 날짜 타입이 없으므로, 이 값들은 변환 시 ISO 8601 문자열로 직렬화됩니다.

TOML to JSON 변환기를 사용하는 이유

TOML로 작성된 설정 파일은 종종 JSON만 허용하는 시스템에 공급되어야 합니다. 파일을 수동으로 재작성하거나 로컬에 파서 라이브러리를 설치하는 대신, 브라우저 기반 변환기가 몇 초 만에 변환을 처리합니다.

🔒
개인정보 보호 우선 처리
TOML 데이터는 전적으로 브라우저 내에서 파싱 및 변환됩니다. 서버에 아무것도 업로드되지 않으므로, API 키, 데이터베이스 자격 증명, 내부 호스트명이 포함된 설정 파일도 안전하게 변환할 수 있습니다.
즉각적인 변환
TOML을 붙여넣으면 즉시 포맷된 JSON 출력을 얻을 수 있습니다. 일회성 형식 변환을 위해 Node.js 패키지, Python 라이브러리, CLI 도구를 설치할 필요가 없습니다.
🔀
TOML v1.0.0 완전 지원
변환기는 점으로 구분된 키, 인라인 테이블, 테이블 배열, 여러 줄 문자열, 날짜-시간 값 등 모든 TOML 데이터 타입을 처리합니다. 수동 변환에서 오류가 발생하기 쉬운 엣지 케이스도 올바르게 처리됩니다.
📋
계정 불필요
페이지를 열고, TOML을 붙여넣은 후, JSON 결과를 복사하면 됩니다. 회원가입도, 사용 횟수 제한도, 사용 추적도 없습니다. 방문할 때마다 동일하게 작동합니다.

TOML to JSON 활용 사례

프론트엔드 개발
Rust WASM 프로젝트의 Cargo.toml 메타데이터를 JavaScript 빌드 스크립트나 package.json 생성 단계에서 사용할 JSON으로 변환합니다.
백엔드 엔지니어링
TOML로 작성된 애플리케이션 설정을, AWS Lambda 환경 변수나 Docker 컨테이너 레이블처럼 JSON 설정이 필요한 환경에 주입하기 위한 JSON으로 변환합니다.
DevOps 및 CI/CD
GitHub Actions, GitLab CI 같은 파이프라인 도구는 종종 JSON 입력으로 동작합니다. TOML 기반 도구 설정(rustfmt.toml, taplo.toml)을 린팅 또는 검증 단계를 위해 JSON으로 변환합니다.
QA 및 테스트
TOML 소스 파일에서 JSON 테스트 픽스처를 생성합니다. TOML은 주석 지원과 읽기 쉬운 문법 덕분에 테스트 데이터 소스로 유지 관리하기 쉽지만, 테스트 하네스는 종종 JSON 입력을 기대합니다.
데이터 엔지니어링
시스템 간 설정을 마이그레이션할 때, 한 플랫폼(예: InfluxDB, Telegraf)의 TOML 파일을 다른 플랫폼의 API 또는 가져오기 도구를 위한 JSON 문서로 변환해야 할 수 있습니다.
학습 및 교육
데이터 형식을 배우는 학습자가 TOML 예제를 붙여넣어, 테이블이 어떻게 중첩 객체가 되는지, 테이블 배열이 어떻게 JSON 배열이 되는지, TOML의 날짜 타입이 어떻게 문자열에 매핑되는지 직접 확인할 수 있습니다.

TOML to JSON 타입 매핑 참조

모든 TOML 타입에는 직접 대응하는 JSON 타입이 있습니다. 단, 날짜 및 시간 값은 예외입니다. 아래 표는 각 TOML 타입이 JSON으로 어떻게 변환되는지 보여줍니다. 이 매핑은 TOML v1.0.0 사양을 따르며, tomllib(Python), toml-rs(Rust), @iarna/toml(Node.js) 같은 표준 파서의 동작과 일치합니다.

타입TOML 문법JSON 출력
String"value""value"
Integer4242
Float3.143.14
Booleantrue / falsetrue / false
Offset Date-Time1979-05-27T07:32:00Z"1979-05-27T07:32:00Z"
Local Date-Time1979-05-27T07:32:00"1979-05-27T07:32:00"
Local Date1979-05-27"1979-05-27"
Local Time07:32:00"07:32:00"
Array[1, 2, 3][1, 2, 3]
Table[section]{ "section": {} }
Inline Table{ key = "val" }{ "key": "val" }
Array of Tables[[items]]"items": [{}]

TOML 정수는 가독성을 위한 밑줄(예: 1_000_000)과 16진수(0xDEADBEEF), 8진수(0o755), 2진수(0b11010110) 리터럴을 지원합니다. 이 모두는 JSON에서 일반 10진수로 변환됩니다. TOML은 무한대(infinity)와 NaN 부동소수점 값도 지원하지만, 이는 JSON으로 표현할 수 없어 엄격 모드에서 변환 오류가 발생합니다.

코드 예제

네 가지 언어로 작성된 TOML to JSON 변환 예제입니다. 각 예제는 TOML 파일을 읽고, 파싱하여, 포맷된 JSON을 출력합니다.

JavaScript (Node.js)
import { parse } from '@iarna/toml'
import fs from 'fs'

const toml = fs.readFileSync('config.toml', 'utf8')
const json = parse(toml)
console.log(JSON.stringify(json, null, 2))
// Input:  [server]
//         host = "localhost"
//         port = 8080
// Output: { "server": { "host": "localhost", "port": 8080 } }
Python
import tomllib   # Python 3.11+ (standard library)
import json

with open('config.toml', 'rb') as f:
    data = tomllib.load(f)

print(json.dumps(data, indent=2, default=str))
# Dates become strings: "1979-05-27"
# Arrays of tables become JSON arrays of objects
Go
package main

import (
    "encoding/json"
    "fmt"
    "os"

    "github.com/BurntSushi/toml"
)

func main() {
    var data map[string]any
    _, err := toml.DecodeFile("config.toml", &data)
    if err != nil {
        panic(err)
    }
    out, _ := json.MarshalIndent(data, "", "  ")
    fmt.Println(string(out))
}
CLI (yj / dasel)
# Using yj (YAML/JSON/TOML converter)
cat config.toml | yj -tj

# Using dasel
dasel -f config.toml -r toml -w json

# Using Python one-liner (3.11+)
python3 -c "import tomllib, json, sys; print(json.dumps(tomllib.load(sys.stdin.buffer), indent=2, default=str))" < config.toml

자주 묻는 질문

변환 시 TOML 주석은 어떻게 처리되나요?
TOML 주석(#으로 시작하는 줄)은 변환 중에 삭제됩니다. JSON은 주석을 지원하지 않으므로 출력에 보존할 방법이 없습니다. 주석을 유지해야 한다면, 대상 형식으로 JSONC(주석이 있는 JSON)를 사용하는 것을 고려하세요.
TOML to JSON 변환 시 데이터가 손실될 수 있나요?
일반적인 TOML 문서의 경우 데이터는 손실되지 않습니다. 모든 문자열, 숫자, 불리언, 배열, 테이블은 직접 대응하는 JSON 타입이 있습니다. 유일한 변환은 날짜와 시간 값으로, JSON에서 ISO 8601 문자열이 됩니다. 두 가지 엣지 케이스에서 문제가 발생할 수 있습니다. TOML은 JSON으로 표현할 수 없는 무한대와 NaN 부동소수점을 지원하며, 매우 큰 정수는 JSON 파서의 정밀도 한계(JavaScript에서 2^53 - 1)를 초과할 수 있습니다.
TOML의 테이블 배열은 JSON에서 어떻게 표현되나요?
TOML의 [[이중 대괄호]] 문법은 테이블 배열을 정의합니다. 각 [[섹션]] 블록은 JSON 배열에 새 객체를 추가합니다. 예를 들어, [[fruits]] 블록 두 개는 두 객체를 가진 JSON 배열이 됩니다. "fruits": [{...}, {...}]. 이중 대괄호 문법은 TOML에서 처음 보면 이해하기 까다로운 부분 중 하나인데, JSON 출력은 구조를 명확하게 보여줍니다.
변환이 가역적인가요? JSON에서 TOML로 다시 변환할 수 있나요?
구조적으로는 가능합니다. 모든 JSON 객체는 TOML 테이블로 표현할 수 있고, JSON 배열은 TOML 배열에 매핑됩니다. 그러나 주석, 점으로 구분된 키 그룹화, 인라인 테이블 포맷 같은 TOML 고유 기능은 최초 TOML to JSON 변환 시 손실되어 복구할 수 없습니다. 왕복 변환 결과는 유효하지만 가독성이 떨어지는 TOML이 될 수 있습니다.
설정 파일에서 TOML과 JSON의 차이점은 무엇인가요?
TOML은 설정을 위해 설계되었습니다. 주석을 지원하고, 중첩 구조에 대해 더 읽기 쉬운 문법을 가지며, 정수와 부동소수점을 구별하고, 기본 날짜/시간 타입을 포함합니다. JSON은 프로그램 간 데이터 교환을 위해 설계되었습니다. JSON은 도구와 API에서 더 광범위하게 지원되지만, TOML이 사람이 읽고 편집하기에 더 쉽습니다. 많은 프로젝트가 소스 설정에 TOML을 사용하고 배포를 위해 JSON으로 변환합니다.
이 도구는 server.host 같은 점으로 구분된 키를 어떻게 처리하나요?
TOML의 점으로 구분된 키(예: server.host = "localhost")는 JSON에서 중첩 객체를 생성합니다. {"server": {"host": "localhost"}}. 이는 host 키를 가진 [server] 테이블을 정의하는 것과 동일합니다. 변환기는 점으로 구분된 키를 자동으로 완전한 중첩 구조로 분석합니다.
TOML 파일 변환이 실패하는 이유는 무엇인가요?
일반적인 원인으로는 문자열 값을 따옴표로 감싸지 않은 경우(TOML에서 필수), 여러 줄 기본 문자열 내부에 탭으로 들여쓰기를 사용한 경우, 중복된 키 정의, 동일한 경로에 대해 점으로 구분된 키와 명시적 테이블 헤더를 혼용한 경우 등이 있습니다. 변환기는 문제를 찾는 데 도움이 되도록 줄 번호가 포함된 파서 오류 메시지를 표시합니다.