반응형
xml, json, yaml 의 특징과 사용방법
XML, JSON, YAML은 모두 데이터를 저장하고 교환하는 데 사용되는 포맷입니다. 각 포맷은 특정 사용 사례와 요구 사항에 따라 선택됩니다. XML은 복잡한 데이터와 메타데이터를 표현할 때 유용하며, JSON은 웹 API와의 통신에 주로 사용됩니다. YAML은 가독성이 중요하거나 들여쓰기를 통해 계층적인 구조를 표현할 때 유리합니다.
결국 선택은 데이터의 성격, 애플리케이션의 요구 사항, 개발자의 선호도에 따라 달라질 수 있습니다. 예를 들어, 인터넷을 통한 데이터 교환에는 JSON이 적합할 수 있으며, 설정 파일이나 내부 데이터 표현에는 YAML이 좋은 선택일 수 있습니다. XML은 이미 많은 시스템에서 사용되고 있으며, 복잡한 데이터 구조를 다루는 데 적합합니다.
1. XML (eXtensible Markup Language)
특징
- 태그 기반의 구조를 가지며, HTML과 유사한 문법을 사용합니다.
- 데이터와 메타데이터를 모두 표현할 수 있어, 데이터의 구조와 의미를 명확하게 표현할 수 있습니다.
- 이름공간(namespace) 지원으로 태그의 중복을 방지할 수 있습니다.
사용 방법
- xml.etree.ElementTree 모듈을 사용하여 XML 데이터를 생성, 수정, 파싱할 수 있습니다.
import xml.etree.ElementTree as ET
# XML 생성
root = ET.Element("Data")
item = ET.SubElement(root, "Item")
item.text = "Example"
tree = ET.ElementTree(root)
# XML 파일로 저장
tree.write("example.xml")
# XML 파싱
tree = ET.parse('example.xml')
root = tree.getroot()
print(root.find("Item").text)
2. JSON (JavaScript Object Notation)
특징
- 경량의 데이터 교환 포맷으로, 사람과 기계가 모두 읽기 쉽게 설계되었습니다.
- 자바스크립트 객체 문법을 기반으로 하며, 키-값 쌍으로 데이터를 표현합니다.
- 웹 API와의 통신에 널리 사용되며, 다양한 프로그래밍 언어에서 지원됩니다.
사용 방법
- json 모듈을 사용하여 JSON 데이터를 생성, 파싱할 수 있습니다.
import json
# JSON 생성
data = {"Item": "Example"}
json_data = json.dumps(data)
# JSON 파일로 저장
with open("example.json", "w") as file:
file.write(json_data)
# JSON 파싱
with open("example.json", "r") as file:
parsed_data = json.load(file)
print(parsed_data["Item"])
반응형
3. YAML (YAML Ain't Markup Language)
특징
- 사람이 읽고 쓰기 편한 데이터 직렬화 포맷입니다.
- 계층적 구조를 들여쓰기로 표현하여 가독성이 높습니다.
- 복잡한 데이터 구조를 간결하게 표현할 수 있습니다.
사용 방법
PyYAML 라이브러리를 사용하여 YAML 데이터를 생성, 파싱할 수 있습니다.
import yaml
# YAML 생성
data = {"Item": "Example"}
yaml_data = yaml.dump(data)
# YAML 파일로 저장
with open("example.yaml", "w") as file:
file.write(yaml_data)
# YAML 파싱
with open("example.yaml", "r") as file:
parsed_data = yaml.safe_load(file)
print(parsed_data["Item"])
!! XML, JSON, YAML 비교
기준 | XML | JSON | YAML |
구문 | 태그 기반 (ex: <item>Example</item>) | 키-값 쌍 (ex: {"item": "Example"}) | 들여쓰기 기반 (ex: Item: Example) |
가독성 | 낮음 (태그로 인해 더 복잡) | 좋음 (간결하고 명확) | 매우 좋음 (사람이 읽기 쉬움) |
데이터 크기 | 큼 (태그가 추가적인 공간 차지) | 중간 | 작음 (간결함) |
파싱 속도 | 느림 (복잡한 구조) | 빠름 (간단한 구조) | 중간 |
사용 사례 | 복잡한 데이터 구조, 메타데이터 필요 시 사용 | 웹 API, 설정 파일, 간단한 데이터 교환에 사용 | 설정 파일, 복잡한 구조 필요 시 사용 |
* json2yaml site
반응형
'코딩취미 > 프로그램 지식' 카테고리의 다른 글
[eclipse] ELF Parser vs GNU ELF Parser, GNU PE64 Windows Parser 목적과 특징 비교 (0) | 2024.02.27 |
---|---|
네임 맹글링(Name Mangling)의 목적과 프로그래밍 언어별 사용 특징 (0) | 2024.01.19 |
NOP (No Operation) 의 동작 개념과 실행 시간 (0) | 2024.01.11 |
트렁크(trunk)/브랜치(branch)/태그(tag) 프로젝트 흐름 (0) | 2024.01.10 |
[ARM]Cortex-M3 Peripherals map : SysTick Timer 설정 방법 (0) | 2024.01.06 |