Cargo, Poetry, Hugo 등에 맞춰 설정을 YAML에서 TOML로 옮길 때 씁니다. 맵은 [테이블]로, 리스트는 배열 그대로, 맵의 리스트는 [[테이블]]이 됩니다. 앵커는 먼저 펼쳐지며, 파싱한 데이터를 변환하므로 주석은 옮겨지지 않습니다.
사용법
- 데이터를 붙여 넣거나 파일을 끌어다 놓거나 엽니다. 입력 형식은 자동으로 감지되며, ‘변환 전’에서 직접 고를 수도 있습니다.
- ‘변환 후’에서 출력 형식을 고릅니다. 입력하는 대로 결과가 바로 바뀝니다.
- 오류가 있으면 정확한 줄과 열을 표시합니다. 오류를 누르면 해당 위치로 이동합니다.
- ‘트리’에서 읽어 들인 데이터를 살펴볼 수 있습니다. 결과를 복사하거나 다운로드하고, 맞바꾸기로 거꾸로 변환할 수 있습니다.
- XML 속성은 @로 시작하는 키가 되고 요소의 텍스트는 #text에 들어갑니다. XML을 만들 때도 같은 규칙을 씁니다.
- CSV 출력은 중첩 객체를 점 표기 열(address.city)로 펼칩니다. 다운로드 파일에는 BOM이 들어가 엑셀에서 한글이 깨지지 않습니다.
- TOML에는 null이 없고 최상위가 테이블이어야 하므로 null 값은 빼고 리스트는 “items”로 감쌉니다.
- ‘숫자·불리언 인식’을 끄면 CSV, XML, INI, .env, 쿼리 스트링의 모든 값을 문자열로 유지합니다.
- 모든 처리는 브라우저에서 이루어지며 아무것도 업로드되지 않습니다.
형식끼리 어떻게 대응하나요
JSON, YAML, TOML은 객체, 배열, 문자열, 숫자, 불리언이라는 같은 데이터 모델을 쓰므로 서로 바꿔도 정보가 거의 사라지지 않습니다. 예외는 두 가지로, TOML에는 null이 없고 최상위가 반드시 테이블이어야 합니다. 이 도구는 null을 빼고, 최상위 리스트는 items 키 아래에 넣습니다. YAML 1.2는 JSON의 상위 집합이라 올바른 JSON은 그대로 올바른 YAML이기도 합니다.
XML은 키-값이 아니라 요소로 이루어진 트리입니다. 속성은 @로 시작하는 키가 되고(id="7"은 "@id": "7"), 요소의 텍스트는 #text에 들어가며, 같은 이름의 자식 요소가 반복되면 배열이 됩니다. XML로 쓸 때도 같은 규칙을 거꾸로 적용합니다.
평평한 형식: CSV, INI, .env, 쿼리 문자열
CSV는 표이므로 중첩 객체는 address.city 같은 점 표기 열로 펼치고, 배열의 항목 하나가 한 행이 됩니다. INI 섹션은 객체로, .env는 키-값 쌍만 담은 평평한 객체로 바뀝니다(export, 따옴표, 주석도 처리). ?tag=a&tag=b&filter[brand]=x 같은 쿼리 문자열은 {"tag": ["a", "b"], "filter": {"brand": "x"}}가 됩니다.
타입과 자주 하는 실수
CSV, XML, INI, .env, 쿼리 문자열에는 타입이 없어 모두 텍스트입니다. 기본 설정에서는 42, 3.5, true 같은 값을 숫자와 불리언으로 바꾸므로, 우편번호 01234나 ID를 문자열로 두려면 이 옵션을 끄세요. YAML은 들여쓰기가 의미를 가지며 탭을 쓸 수 없습니다. PyYAML 같은 YAML 1.1 파서는 따옴표 없는 yes, no, on, off를 불리언으로 읽으므로, 국가 코드 NO 같은 값은 따옴표로 감싸세요.
자주 묻는 질문
JSON YAML 변환은 어떻게 하나요?
JSON을 붙여 넣거나 .json 파일을 놓고 변환 후에서 YAML을 고르세요. 객체는 들여쓴 키: 값 블록으로, 배열은 하이픈 목록으로 바뀝니다. 결과를 복사하거나 .yaml로 내려받으면 됩니다.
올바른 JSON은 모두 올바른 YAML인가요?
YAML 1.2는 JSON의 상위 집합으로 설계돼 있어 그렇습니다. 그래도 블록 형식 YAML이 읽기 쉽고 주석도 쓸 수 있어서 변환할 가치가 있습니다.
XML 속성은 JSON으로 바꾸면 어떻게 되나요?
@가 붙은 키가 됩니다. <item id="7">Pen</item>은 {"item": {"@id": "7", "#text": "Pen"}}이 됩니다. 같은 이름의 요소가 반복되면 배열이 됩니다.
중첩된 JSON 객체는 CSV에서 어떻게 되나요?
address.city, address.zip처럼 점 표기 열로 펼쳐집니다. 객체 배열은 객체마다 한 행이 되어 엑셀에서 바로 열 수 있습니다.
TOML 결과에서 null이 사라지는 이유는 무엇인가요?
TOML에는 null 값이 없기 때문입니다. 값이 null인 키는 빠지므로, 키가 없을 때도 같은 동작을 하는지 애플리케이션에서 확인하세요.
데이터가 업로드되나요?
아니요. 파싱과 변환은 브라우저 안에서만 이루어지므로 비밀번호나 API 키가 담긴 설정 파일도 기기 밖으로 나가지 않습니다.