시스템 간의 데이터 교환
다양한 시스템 간에 데이터를 효율적으로 교환하기 위해서는 통일 된 양식이 필요하다. 초기에는 XML 형식으로 데이터를 교환하였다. 하지만 XML보다 더 가벼운 양식이 필요하여 JSON이 만들어졌다. 시스템 간에 데이터를 교환할 때는 시스템 외부로 보내기 위한 작업인 직렬화, 외부 데이터를 받아서 시스템 내부에서 처리하기 좋은 형태로 변환하는 역직렬화 과정을 거친다.
직렬화와 역직렬화
직렬화란 외부의 시스템에서도 사용할 수 있도록 데이터를 바이트 스트림 형태로 변환하는 기술이다. 바이트 스트림은 데이터를 담는 양식으로 JSON, XML 등이 있다.
역직렬화란 외부에서 들어온 바이트 스트림을 시스템에서 처리할 수 있는 형태로 변환하는 기술이다. 자바스크립트 시스템에서 JSON을 받은 경우에 JSON.parse()를 통해 객체로 변환한다.
JSON
JSON이란
[
{ "name": "마녀배달부 키키", "song": "따스함에 둘러쌓인다면" },
{ "name": "하울의 움직이는 성", "song": "세계의 약속" }
]
- JSON이란 자바스크립트 객체 문법으로 표현 된 데이터 교환형식이다.
- JSON은 언어 독립적이다.
- 키와 값으로 구성된다.
- 배열, 문자열로도 표현이 가능한다.
JSON을 사용하는 이유
JSON은 언어 독립적이기 때문에 외부 시스템 간에 데이터 교환의 양식으로 활용한다. 시스템은 JSON 형태의 데이터를 받고 시스템에 맞게 변환한다(역직렬화). 마찬가지로 데이터를 내보낼 때도 JSON의 형태로 내보낸다(직렬화).
JSON의 활용
API의 반환 형태, 시스템의 설정파일을 표현할 때 사용한다.
XML
XML이란
마크업 형태로 표현 된 데이터 교환양식이다.
<?xml version="1.0" encoding="UTF-8"?>
<OSTList>
<OST like="1">
<name>마녀 배달부 키키</name>
<song>따스함에 둘러쌓인다면</song>
</OST>
<OST like="2">
<name>하울의 움직이는 성</name>
<song>세계의 약속</song>
</OST>
</OSTList>
프롤로그, 루트요소, 하위요소로 구성된다.
XML vs HTML
XML은 데이터 교환·저장을 위해 쓰이는 양식인 반면에 HTML은 데이터를 표현하기 위한 양식이다.
XML vs JSON
XML과 JSON이 동일한 데이터를 표현할 때 XML은 JSON보다 무겁다.
XML을 사용하는 경우
사이트 맵에 대한 정보 등을 제출할 때 XML 양식을 사용한다.
정리
- 시스템 간에 데이터를 효율적으로 교환하기 위해서는 통일 된 양식이 필요하다.
- 직렬화란 시스템이 데이터를 외부에 보내기 위해 바이트스트림으로 변환하는 기술이다.
- 역직렬화란 시스템 외부에서 받아 온 바이트 스트림을 처리 가능한 형태로 변환하는 기술이다.
- 바이트 스트림은 데이터를 교환하기 위한 양식으로 JSON과 XML이 있다.
- JSON은 자바스크립트 객체로 표현한 데이터 교환 형식으로 키값으로 구성되고 언어 독립적이다.
- XML은 마크업으로 표현 된 데이터 교환형식으로 프롤로그, 루트 요소, 하위 요소로 구성되고 언어 독립적이다.