공통점
- 데이터를 저장하고 전송하기 위한 형식
- 데이터 직렬화 형식
Json
- JavaScript 객체와 유사한 형태를 가지며, 키-값 쌍의 컬렉션으로 구성
- 데이터를 표현하는 데 더 간단한 구조를 가짐
- 사람이 쉽게 읽고 쓸 수 있도록 디자인되어 있음
- 텍스트 기반이기 때문에 읽기가 편하고, 작성하기도 비교적 간단
- 더 적은 문자를 사용하여 데이터를 표현하기 때문에 일반적으로 XML보다 더 작은 크기를 가짐, 네트워크 전송 시에 유리
- 구조가 단순하고 간결하여 작은 규모의 데이터를 다루는 데 효율적
Xml
- 태그 기반의 트리 구조를 사용
- 시작 태그와 종료 태그 사이에 데이터가 위치하며, 복잡한 구조와 계층을 가질 수 있음
- 각 요소를 태그로 묶기 때문에 가독성이 떨어짐
- 복잡한 구조로 인해 이해하기 어려움
- 태그와 속성 등을 표현하기 위해 더 많은 문자를 사용하기 때문에 더 많은 저장 공간과 대역폭을 요구
- 태그를 사용하여 데이터를 표현하기 때문에 더 유연한 구조를 가짐, 다양한 유형의 데이터를 다루는 데 더 적합
- 주석을 지원하고, 스키마를 사용하여 데이터의 유효성을 보장할 수 있음
차이점
- 구조 : JSON은 키-값 쌍의 컬렉션으로 구성된 반면, XML은 태그 기반의 트리 구조를 가짐
- 가독성과 크기 : JSON은 가독성이 좋고 크기가 작지만, XML은 가독성이 상대적으로 낮고 크기가 더 큼
- 유연성 : XML은 더 유연한 데이터 구조를 표현할 수 있으며, JSON은 간결하고 간편한 구조를 가지고 있음
예시
Json
{
"person": {
"name": "John Doe",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Anytown"
},
"emails": ["john@example.com", "johndoe@gmail.com"]
}
}
"person"이라는 객체 안에 이름(name), 나이(age), 주소(address), 이메일(emails) 등이 키-값 쌍으로 구성
Xml
<person>
<name>John Doe</name>
<age>30</age>
<address>
<street>123 Main St</street>
<city>Anytown</city>
</address>
<emails>
<email>john@example.com</email>
<email>johndoe@gmail.com</email>
</emails>
</person>
person이라는 태그 안에 name, age, address, emails 등이 중첩된 형태로 표현
요청 및 응답 처리
Json
요청
- 요청 생성 : 클라이언트에서 요청을 생성할 때, 보통 JSON 형태로 데이터를 준비
HTTP 요청 본문에 JSON 데이터를 포함시키는 방식으로 요청을 전송
- JSON 데이터 전송 : 데이터를 JSON 형식으로 변환하고, POST 또는 PUT 요청과 함께 서버에 전송
- 서버에서의 JSON 처리 : 서버는 전송된 JSON 데이터를 받아 파싱한 후, 해당 데이터를 활용하여 작업을 수행
응답
- 데이터 생성 : 서버는 클라이언트 요청에 대한 응답으로 데이터를 생성합니다. 이 데이터는 주로 JSON 형식으로 구성되어 클라이언트에게 전송
- JSON 응답 생성 : 생성된 데이터를 JSON 형식으로 변환하여 HTTP 응답 본문에 실어 클라이언트로 전송
- 클라이언트에서의 JSON 응답 처리 : 클라이언트는 받은 JSON 응답을 해석하여 필요한 데이터를 추출하고, 이를 화면에 표시하거나 다른 작업에 활용
Xml
요청
- 요청 생성 : 클라이언트에서 XML 형태로 데이터를 생성
데이터를 XML 형식으로 포장하여 HTTP 요청 본문에 담아 서버에 전송
- XML 데이터 전송 : XML로 구성된 데이터를 요청과 함께 서버에 보냄
- 서버에서의 XML 처리 : 서버는 수신된 XML 데이터를 파싱하고 해당 요청에 맞는 작업을 수행
응답
- 데이터 생성 : 서버는 클라이언트 요청에 대한 응답으로 데이터를 생성
이 데이터는 XML 형식으로 구성되어 클라이언트에게 전송
- XML 응답 생성 : 생성된 데이터를 XML 형식으로 변환하여 HTTP 응답 본문에 실어 클라이언트로 전송
- 클라이언트에서의 XML 응답 처리 : 클라이언트는 받은 XML 응답을 파싱하고 필요한 데이터를 추출하여 활용
결론
- 데이터 형태와 목적에 따라 JSON 또는 XML 중에서 선택하는 것이 중요
- 웹 애플리케이션의 API 통신이나 데이터 교환에는 JSON이 보다 일반적으로 사용되고, 문서 구조를 다루거나 복잡한 메타데이터를 표현하는 경우 XML이 유용할수도 있음
