JSON → TOML 변환기
왼쪽에 JSON 객체를 붙여넣으면 오른쪽에 TOML 이 만들어져요. @iarna/toml로 엄격하게 스펙을 따릅니다. 모든 처리는 브라우저 안에서 진행되며 업로드가 없어요.
- 왼쪽 텍스트 영역에 JSON 객체를 붙여넣어 주세요.
- "TOML로 변환" 버튼을 누르세요. 최상위는 반드시 JSON 객체여야 합니다 — 배열은 안 돼요.
- 결과를 복사하거나 파일로 다운로드할 수 있어요.
- 레코드 리스트가 필요하면 `{ items: [...] }` 처럼 객체로 감싸 주세요. TOML 의 테이블 배열로 변환됩니다.
어떤 도구인가요?
@iarna/toml을 통해 JSON 객체를 TOML 1.0 사양에 맞게 변환합니다. 중첩된 객체는 `[section]` 헤더가 되고, 객체 배열은 `[[items]]` 테이블 배열 블록이 되며, 문자열/숫자/부울/ISO 8601 날짜시간 문자열은 TOML 원시 값으로 변환돼요. 출력은 엄격한 TOML 파서와의 호환성을 위해 일반 키가 하위 테이블보다 앞에 오도록 정규화됩니다.
예시
JSON 입력:
{
"name": "Ada",
"active": true,
"address": {
"city": "London"
}
} TOML 출력:
name = "Ada"
active = true
[address]
city = "London" 자주 만나는 JSON → TOML 함정
TOML 은 JSON 보다 최상위 규칙이 엄격해요. "되어야 할 것 같은데" 안 되는 JSON 값들의 이유는 대부분 아래 패턴 때문입니다.
- 최상위가 배열. TOML 은 최상위 JSON 배열을 표현할 수 없어요. 객체로 감싸세요: `{"items": [...]}`. 그러면 결과가 `[[items]]` 테이블 배열이 됩니다.
- 최상위가 단일 값. `42` 나 `"hello"` 같은 단일 JSON 값은 TOML 에서 키가 없어요. 객체로 감싸세요: `{"value": 42}`.
- null 값. TOML 에는 null 타입이 없어요. JSON 값이 null 인 키는 직렬화 시 아예 생략됩니다. "명시적으로 비어 있음" 을 표현해야 한다면 빈 문자열 `""` 이나 약속된 센티넬 값을 사용하세요.
- 혼합 타입 배열. TOML 1.0 은 `[1, "two"]` 를 허용하지만 0.5 파서는 거부해요. 0.5 도구를 거쳐야 하는 경우 변환 전에 JSON 배열의 타입을 통일하세요.
- 키에 점이 포함됨. JSON 키 `"my.key"` 는 TOML "도트 키" 경로로 해석돼요. 직렬화기는 따옴표로 감싸 `"my.key" = ...` 로 출력하지만, 일부 소비자는 여전히 경로로 해석할 수 있어요.
- NaN / Infinity. TOML 1.0 은 `nan`, `inf`, `-inf` 리터럴을 지원하지만 JSON 은 이를 표현할 수 없어서 보통 `"NaN"`, `"Infinity"` 같은 문자열로 들어와요. 진짜 TOML 부동소수 특수값이 필요하면 직접 후처리해야 해요.
자주 묻는 질문
날짜는 어떻게 표현되나요?
JSON 의 날짜는 ISO 8601 문자열(예: `"2026-04-26T12:00:00Z"`)이에요. 직렬화기는 이를 TOML 에서도 문자열로 유지하며, 네이티브 날짜시간 타입으로 변환하지는 않습니다. 네이티브 TOML 날짜시간이 필요하면 JavaScript 단계에서 적절한 타입 마커와 함께 처리하세요.
깊이 중첩된 객체는 평탄화되나요?
아니요 — 중첩된 `[a.b.c]` 헤더가 됩니다. 각 단계가 점으로 이어진 헤더 경로가 돼요. 매우 깊은 구조는 헤더 라인이 길어질 수 있는데, 그건 TOML 이 깊이를 표현하는 자연스러운 방식입니다.
키 순서는 유지되나요?
대체로요. 직렬화기는 TOML 규칙에 따라 일반 키가 하위 테이블보다 먼저 오도록 정규화하지만, 같은 단계 내에서는 JSON 의 삽입 순서가 보존됩니다.
TOML 인라인 테이블로 출력할 수 있나요?
안 돼요 — 직렬화기는 항상 `[section]` 블록 헤더를 사용해요. 인라인 테이블이 필요하면 결과를 후처리하세요. 인라인 테이블은 TOML 의 가독성 기능일 뿐 다른 데이터 형태가 아니에요.
JSON 이 어디론가 업로드되나요?
아니요. 모든 처리는 브라우저 안에서 진행돼요. 변환 버튼을 눌러도 어떤 서버에도 데이터가 전송되지 않습니다.
JSON → TOML → JSON 왕복 변환이 가능한가요?
지원되는 타입(문자열, 숫자, 부울, 중첩 객체, 객체 배열)이라면 가능해요. 다만 null 값은 TOML 에 표현이 없어서 사라지고, 키 순서는 정규화될 수 있어요.