각 포맷 장단점 및 비교
데이터 크기 : XML > JSON > CSV
XML | JSON | CSV | |
장점 | ‣ XML은 3가지 포맷중 가장 직관적이다. ‣ 메타 정보를 제공해서 정보 표현 이상의 효과를 가져올 수 있다. |
‣ 모양과 규칙 자체가 단순해서 타 언어에서도 구현하기가 쉽다. | ‣ 용량이 가장 작다. ‣ csv는 용량이 작기 때문에 변하지 않는 많은 양의 데이터를 제공할 때 주로 이용이 가능하다. |
단점 | ‣ 실제 전송하는 정보보다 메타 데이터의 크기가 더 커질 수 있다. | ‣ 콤마가 누락되거나 중괄호가 잘못 닫히는 등 문법 오류에 취약하다. | ‣ 데이터가 많아지면 어떤 데이터가 항목을 나타내는지 가시화가 어렵다. |
주요 사용처 | 단순 게임 옵션, 직접 데이터 수정이 잦은 부분에 사용 | 서버 통신 REST API를 사용할 때 가장 많이 사용. | 간단한 테이블 작성 또는 읽는 속도가 중요한 부분에서 사용 |
XML
XML은 데이터를 표현하기 위하여 많이 사용되어 온 방식으로 HTML과 흡사한 구조를 가지고 있다. XML이 가지는 고유한 문법이 있다는 점에서 소프트웨어 및 하드웨어에 대하여 독립적으로 데이터를 처리할 수 있다. 다목적 마크업 언어로 태그 등을 이용하여 데이터의 구조를 기술하는 언어이다.
XML 특징
- 꺽쇠(<>) 사용
- 트리(Tree) 계층 구조
- 루트(Root)요소부터 시작해 여러개의 자식을 계층적으로 포함
또한 XML은 유효성 검증(Validation)을 통해서 올바르게 작성되었는지 확인할 수 있다. (링크)
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>
</users>
JSON
JSON 형식은 XML과 비슷하게 데이터를 처리하기 위한 형식으로, '속성- 값 쌍' 또는'키 -값 쌍'으로 이루어진 데이터 오브젝트를 전달하기 위한 인간이 읽을 수 있는 텍스트를 사용하는 개방형 포준 포맷이다. 서버 통신을 위해 넓게는 XML을 대체하는 주요 데이터 포맷이다.
JSON 특징
- 일반적으로 서버와의 통신 규약인 REST API를 사용할 때 가장 많이 사용
- 최근에는 XML보다 더 많이 사용
- 모든 프로그래밍 언어에서 JSON형식 지원
그러나, 주석을 사용하지 못한다는 단점이 있다.
JSON 예시
{
"users": {
"1": {
"name": "홍길동",
"score": 95,
"hobby": ["Soccer", "Ninza"]
},
"2": {
"name": "이순신",
"score": 100,
"hobby": ["Sing", "Dancing"]
},
}
}
CSV
CSV 형식은 쉼표를 기준으로 항목을 구분하여 저장한 데이터를 말한다. DB나 표 계산 소프트웨어 데이터를 보존하기 위해 이런 형식을 사용한다. 각 항목이나 판매 내용마다 쉼표(comma)로 구분하여 기록한다.
CSV 특징
- 각 항목이나 판매 내용마다 쉼표(,)로 구분하여 기록
- 텍스트 파일로 보존하여 문서 처리기나 편집기에서 열람, 편집할 수 있음
- 데이터 오염에 대단히 취약한 포맷을 가짐
- 데이터 크기가 매우 작음 (JSON이 CSV에 비해 2~3배 더 크다)
CSV 예시
no, name, score, hobby
1, 홍길동, 95, (Soccer,Ninza)
2, 이순신, 100, (Sing,Dancing)
'Dot . > 개인 공부 기록용' 카테고리의 다른 글
[MacOS] Java 버전(JDK version) 변경하는 방법 (0) | 2021.09.12 |
---|---|
[Eclipse] Github Personal Access Token 발급 및 설정 방법 (git-receive-pack not permitted 에러 해결) (0) | 2021.08.15 |
Mac OS에서 PostgreSQL (Postgres.app) 설치 및 사용법 정리 (0) | 2021.04.28 |
[AWS] AWS Cognito의 Hosting UI 커스텀 사용하는 것이 좋을까? (0) | 2020.10.29 |
[AWS] AWS Cognito User pool 의 Primary Key? 다른 DB와 연결? (0) | 2020.10.29 |