Search
Duplicate

JSON, YAML, XML 이란?

목차(클릭하세요)
데이터 표현방식이 중요한 이유? 🫱데이터를 저장, 처리, 전송하는 방법을 결정하기 때문 상황에 따라 적절하게? 형식을 취사선택 하면 됨!

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
복사

4-3. 유효성 검증 사이트