목차(클릭하세요)
데이터 표현방식이 중요한 이유?
🫱데이터를 저장, 처리, 전송하는 방법을 결정하기 때문
상황에 따라 적절하게? 형식을 취사선택 하면 됨!
1. JSON, YAML, XML이란?
•
XML, JSON, YAML은 모두 데이터를 저장하고 전송하기 위해 사용되는 “텍스트 기반의 데이터 포맷”
•
각 포맷은 특정 목적과 환경에 맞게 설계되었으며, 구조화된 데이터를 표현하는 데 각각의 장단점을 가짐
1-1. 형태를 표로 비교해보기
2. JSON(JavaScript Object Notation)
•
자바스크립트 객체 표기법을 기반으로 함
•
“배열”과 “객체”의 형태로 데이터를 표현
•
서버와의 통신 규약인 REST API를 사용할 때 가장 많이 활용됨
•
웹 크롤링 하다보면 가장 많이 보이는 형식
◦
이유? 사실상 대부분의 프로그래밍 언어에서 JSON을 지원
2-1. 장단점
•
경량의 데이터 교환 포맷
•
텍스트 기반으로 사람과 기계 모두가 읽기 쉽고, 파싱이 간단하며, 웹 개발에서 자바스크립트와의 호환성이 좋음
•
데이터의 구조와 의미를 표현하는 데 있어 제한적
•
텍스트 기반의 데이터 표현에는 한계가 있음
•
치명적 단점?? JSON은 주석 사용불가
2-2. JSON사용법
•
대괄호와 큰 따옴표를 이용하여 계층형 구조를 형성
•
키값이 서로 다른 형태로 사용됨
◦
각 객체의 키(Key)는 해당 객체의 고유한 속성을 나타내며, 객체 내에서는 각 키의 이름이 유일해야 함
◦
JSON 객체들을 배열에 넣어 여러 객체를 나열할 때는 각 객체가 동일한 키를 가질 수 있음
▪
정리하면? 하나의 키에서 여러개의 값을 배열형태로 가질 경우, 배열 내에서는 객체들이 동일한 키 구조를 공유할 수 있음!!
{
"users": {
"user": [
{
"name": "양파고",
"score": 95,
"hobby": {
"element": ["Soccer", "Ninza"]
}
},
{
"name": "양순신",
"score": 100,
"hobby": {
"element": ["Sing", "Dancing"]
}
},
{
"name": "김철딱",
"score": 97,
"hobby": {
"element": ["Coding", "Hiding"]
}
}
]
}
}
JSON
복사
2-3. 유효성 검증 사이트
3. YAML(YAML Ain't Markup Language)
•
야물이라고 읽어햐 하나??
•
인간이 읽을 수 있는 데이터 직렬화 포맷
◦
사람이 보기좋게 작성하는 데 목적을 둠
•
구성 파일, 데이터 교환, 메시징 등에 사용
•
들여쓰기를 사용하여 데이터의 계층 구조를 표현
3-1. 장단점
•
매우 읽기 쉽고, 구조가 명확하며, XML이나 JSON보다 더 간결하게 데이터를 표현
•
들여쓰기에 의존하기 때문에 공백과 탭을 정확히 사용해야 하며, 파싱 오류가 발생하기 쉬움
•
한글과 같은 유니코드를 그대로 사용 가능
◦
JSON같은 경우는 한글 등의 멀티 바이트 문자를 인코딩하여 보여줌
3-2. YAML사용법
•
YAML은 XML과 문법적으로 유사한 점이 많음
•
주석을 사용 가능하며 개행, 공백으로 블록을 인식
•
XML과의 차이점은 태그를 사용하지 않고, 공백 위주로 데이터를 구분
◦
한줄로 작성 불가능
users:
- name: 양파고
score: 95
hobby:
- Soccer
- Ninza
- name: 양순신
score: 100
hobby:
- Sing
- Dancing
- name: 김철딱
score: 97
hobby:
- Coding
- Hiding
YAML
복사
3-3. 유효성 검증 사이트
4. XML(eXtensible Markup Language)
•
확장 가능한 마크업 언어
•
데이터의 구조와 의미를 설명하는 태그(tag)를 사용하여 문서를 구조화
◦
꺽쇠(<>)를 사용한다는 의미
•
HTML과 유사한 구조를 가지고 있지만, 사용자가 태그를 정의하여 데이터의 의미를 명확히 할 수 있음
•
트리(Tree) 계층 구조를 가짐
◦
루트(ROOT) 요소부터 시작해 여러 개의 자식을 계층적으로 포함
4-1. 장단점
•
표준화되어 있으며, 데이터의 구조와 의미를 명확하게 표현가능, 주석도 사용가능
•
각 항목별로 의미와 키과 값이 쌍으로 묶여있는 데이터를 효율적으로 전달
◦
예) <visitorcnt id="20230101" cnt="1000"/>
•
태그로 인해 파일 크기가 비교적 크며, 파싱 과정이 복잡
4-2. XML사용법
•
시작시 <xml> 태그를 이용해서 XML 문서임을 명시
◦
? 기호는 XML 선언의 시작과 끝을 나타내는 특별한 구문
•
version: XML 문서의 버전을 명시
•
encoding: XML 문서의 문자 셋(Character Set)을 명시(일반적으로 UTF-8을 사용)
•
standalone: XML 문서 외부 소스 데이터에 의존하는지의 여부를 명시
<?xml version="1.0" encoding="UTF-8"?>
XML
복사
•
XML의 주석은 <!-- 주석 내용 - - >형태로 사용 가능
•
예시
<?xml version="1.0" encoding="UTF-8" ?>
<users>
<user>
<name>양파고</name>
<score>95</score>
<hobby>
<element>Soccer</element>
<element>Ninza</element>
</hobby>
</user>
<user>
<name>양순신</name>
<score>100</score>
<hobby>
<element>Sing</element>
<element>Dancing</element>
</hobby>
</user>
<user>
<name>김철딱</name>
<score>97</score>
<hobby>
<element>Coding</element>
<element>Hiding</element>
</hobby>
</user>
</users>
XML
복사