데이터 형식 변환기
JSON, YAML, XML, TOML, INI, CSV 형식을 상호 변환하고 포매팅, 검증, 트리 뷰를 제공합니다. 입력 형식을 자동 감지하여 원하는 형식으로 변환합니다.
변환기
트리 뷰
경로 조회
점 표기법(0-기반): .name, .items[0] | XPath 스타일(1-기반): /root/item, //name, /items/item[1]
변환 예제
아래 버튼을 클릭하면 예제 데이터가 자동으로 입력됩니다.
형식 비교
| 항목 | JSON | YAML | XML | TOML | INI | CSV |
|---|---|---|---|---|---|---|
| 가독성 | 중간 | 높음 | 낮음 (태그 오버헤드(Overhead)) | 높음 | 높음 | 높음 (테이블) |
| 주석 | 미지원 | # |
<!-- --> |
# |
; # |
미지원 |
| 데이터 타입 | 6종 (문자열, 숫자, 불리언, null, 객체, 배열) | JSON 호환 + 날짜, 블록 스칼라 등 | 텍스트 기반 (스키마로 타입 지정) | 문자열, 정수, 실수, 불리언, 날짜, 배열, 테이블 | 문자열 기반 (타입 추론) | 문자열 기반 (타입 추론) |
| 속성(Attribute) | 미지원 | 미지원 | 지원 | 미지원 | 미지원 | 미지원 |
| 주요 용도 | API 통신, 웹 | 설정 파일 (K8s, Ansible) | 문서 마크업, SOAP, Device Tree | 설정 파일 (Cargo, pip) | 설정 파일 (systemd, samba, php) | 데이터 교환, 스프레드시트 |
| 표준 | RFC 8259 | YAML 1.2 | W3C XML 1.0 | TOML v1.0.0 | 비공식 (de facto) | RFC 4180 |
XML 변환 규칙
XML과 JSON/YAML/TOML 사이 변환 시 다음 규칙을 적용합니다.
- 속성(Attribute):
@속성명키로 변환됩니다. (예:<item id="1">→{"@id": "1"}) - 텍스트 콘텐츠: 자식 요소가 있는 경우
#text키로 변환됩니다. - 반복 요소: 같은 이름의 자식이 여러 개이면 배열로 변환됩니다.
- 루트 요소: JSON/YAML/TOML → XML 변환 시 최상위 키가 하나면 루트 요소명으로 사용하고, 여러 개면
<root>로 감쌉니다.
INI 변환 규칙
INI와 JSON/YAML/XML/TOML/CSV 사이 변환 시 다음 규칙을 적용합니다.
- 섹션:
[section]이 객체의 중첩 키로 변환됩니다. (예:[database]→{"database": {...}}) - 전역 키: 섹션 없이 나오는 키-값 쌍은 최상위에 배치됩니다.
- 타입 추론:
true/false,yes/no,on/off는 불리언으로, 숫자 형태는 숫자로 변환됩니다. - 주석:
;또는#으로 시작하는 줄은 무시됩니다. - 역변환: 2단계 이상 중첩된 객체는
[parent.child]점 표기법 섹션명을 사용합니다.
CSV 변환 규칙
CSV와 JSON/YAML/XML/TOML/INI 사이 변환 시 다음 규칙을 적용합니다.
- 헤더: 첫 번째 줄을 열 이름(헤더)으로 사용하여 배열 of 객체(
{"rows": [...]})로 변환됩니다. - 따옴표 필드: 쉼표, 개행, 따옴표를 포함하는 필드는 RFC 4180 규칙에 따라 처리됩니다.
- 타입 추론: 숫자, 불리언(
true/false), 빈 값(null)이 자동 변환됩니다. - 역변환: 배열 of 객체 구조만 CSV로 변환할 수 있습니다. 최상위가
rows,data,items,records등 단일 배열 래퍼이면 자동으로 풀립니다. - 제한: 깊은 중첩이나 비-테이블 구조는 CSV로 변환할 수 없으며, 오류 메시지가 표시됩니다.
JSON (JavaScript Object Notation)
JSON은 경량 데이터 교환 형식으로, 웹 API에서 사실상 표준으로 사용됩니다. JavaScript 네이티브 지원으로 파싱이 빠르며, 중괄호와 대괄호로 구조를 표현합니다.
- 키-값 쌍:
{"key": "value"} - 배열:
[1, 2, 3] - 중첩: 객체와 배열의 자유로운 조합
- 제한: 주석 미지원, 후행 쉼표(trailing comma) 미지원
YAML (YAML Ain't Markup Language)
YAML은 사람이 읽기 쉬운 데이터 직렬화(Serialization) 형식입니다. 들여쓰기로 계층을 표현하며, Kubernetes, Docker Compose, Ansible 등 설정 파일에 널리 사용됩니다.
- 키-값:
key: value(들여쓰기 기반 계층) - 배열:
- item형태의 목록 - 주석:
#으로 시작 - 블록 스칼라:
|(리터럴),>(접기)
참고: 이 도구는 YAML 기본 문법(키-값, 배열, 중첩, 블록 스칼라, 주석, 인라인 컬렉션)을 지원합니다. 앵커(&), 별칭(*), 태그(!!) 등 고급 기능은 지원하지 않습니다.
XML (eXtensible Markup Language)
XML은 데이터를 구조화하여 저장하고 전송하기 위한 마크업 언어입니다. 태그와 속성(Attribute)으로 데이터를 표현하며, 스키마 기반 유효성 검증이 가능합니다.
- 요소:
<tag>내용</tag> - 속성:
<tag attr="value"> - 자기 닫기:
<tag /> - 네임스페이스(Namespace):
xmlns로 정의
참고: 이 도구는 네임스페이스는 접두사를 유지하는 수준으로 처리합니다. DTD, 엔티티 선언, CDATA 섹션 등 고급 기능은 부분적으로 지원합니다.
TOML (Tom's Obvious Minimal Language)
TOML은 설정 파일을 위한 형식으로, 직관적인 의미 구조(Semantic)를 제공합니다. Rust의 Cargo.toml, Python의 pyproject.toml 등에 사용됩니다.
- 키-값:
key = "value" - 테이블:
[section]으로 구분 - 테이블 배열:
[[array]]로 반복 구조 - 타입: 문자열, 정수, 실수, 불리언, 날짜, 배열, 인라인 테이블
참고: 이 도구는 TOML v1.0.0의 주요 기능을 지원합니다. 멀티라인 기본 문자열("""), 멀티라인 리터럴 문자열(''')을 지원하며, 날짜/시간 값은 문자열로 처리합니다.
INI (Initialization File)
INI는 설정 파일을 위한 단순한 텍스트 형식으로, [섹션]과 키 = 값 쌍으로 구성됩니다. Linux의 systemd unit 파일, samba 설정, PHP 설정 등에서 널리 사용됩니다.
- 섹션:
[section]으로 그룹 구분 - 키-값:
key = value또는key=value - 주석:
;또는#으로 시작 - 제한: 공식 표준 없이 구현마다 차이가 있음
참고: 이 도구는 가장 일반적인 INI 문법을 지원합니다. 섹션, 키-값 쌍, 주석, 따옴표 문자열, 빈 값을 처리하며, 타입 추론(숫자, 불리언)을 수행합니다.
CSV (Comma-Separated Values)
CSV는 테이블 형태의 데이터를 쉼표로 구분하여 저장하는 텍스트 형식입니다. 스프레드시트, 데이터베이스 내보내기, 데이터 분석 등에서 범용적으로 사용됩니다.
- 헤더: 첫 줄이 열 이름
- 구분자: 쉼표(
,) - 따옴표: 쉼표, 개행, 따옴표를 포함하는 필드는 큰따옴표로 감쌈
- 이스케이프: 필드 내 따옴표는
""로 이스케이프
참고: 이 도구는 RFC 4180 규칙을 따릅니다. CSV는 평면(테이블) 데이터만 표현할 수 있으므로, 깊은 중첩 구조의 변환에는 제한이 있습니다.