JSON(JavaScript Object Notation)은 Javascript객체 문법으로 구조화된 데이터교환형식이다.
일반적으로 웹 어플리케이션에서 데이터를 전송할 때 사용한다.
JSON은 프로그래밍 언어와 프레임워크 등에 독립적이므로, 서로 다른 시스템간에 데이터를 교환할 때 사용된다.
그렇다면 자바스크립트의 객체 문법은 무엇일까?
바로 키(key)와 값(value)쌍으로 구성된 문법이다.
{
"name": "고성인",
"age": 25
}
와 같이 "name"이라는 key에 "고성인"이라는 value, "age"라는 key에 25라는 value가 있는 구조이다.
JSON이 JavaScript Object Notation이라면 자바스크립트의 객체와 완전히 동일할까?
JSON은 자바스크립트의 객체와 비슷하게 생겼고, 대부분 동일하다.
하지만 표현할 수 있는 데이터에서 차이가 존재한다.
JSON은 자바스크립트 객체와 유사하지만 undefined, 메서드 등을 포함할 수 없다.
JSON이 가질수 있는 타입은 다음과 같다.
JSON은 javascript, python, java등 여러 언어에서 데이터를 교환하는 형식으로 사용된다.
따라서 각각의 언어들마다 JSON을 읽을 수 있도록 parsing해주는 작업을 해야한다.
이럴때 사용되는 개념이 직렬화와 역직렬화다.
직렬화란 외부의 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술을 의미한다.
javascript가 어떠한 정보를 해석하는 방법과 python이 어떠한 정보를 해석하는 과정은 서로 다를 수 있기에, 모든 시스템이 읽을 수 있는 byte코드의 형태로 변환하는 작업이 필요하다.
대표적으로 자바스크립트에서는 JSON.stringify()를 사용하여 직렬화 작업을 수행한다.
역직렬화란 byte형태로 받은 데이터를 특정 언어에서 사용할 수 있도록 해당 언어에 맞게 변환하는 작업을 의미한다.
자바스크립트의 경우 JSON을 사용할 때 Object타입을 사용하며, python의 경우 JSON을 dict라는 타입으로 변환하여 사용한다.
대표적으로 자바스크립트에서는 JSON.parse()를 사용하여 JSON파일을 역직렬화한다.
XML(Extensible Markup Language)은 마크업 형태를 사용하는 데이터교환형식이다.
마크업(markup)은 태그 등을 이용하여 문서나 데이터의 구조를 나타내는 방법이다.
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>
맨 윗줄에는 버전과 어떤 방식으로 인코딩을 할지 정하는 태그가 들어간다.
그 다음에는 루트요소가 존재하며, 루트요소 안에 하위 요소들이 존재한다.
HTML(Hypertext Markup Language)는 웹페이지를 표현하기 위한 마크업 언어이다.
HTML역시 여러 태그들의 조합으로 이루어져 있으며, HTML의 구조는 다음과 같다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p></p>
<div></div>
</body>
</html>
HTML과 XML의 구조는 매우 비슷하지만, 용도와 태그 정의 등 차이점이 존재한다.
HTML은 앞서 말한것과 같이 웹페이지의 화면을 구성하는 용도로 사용되어지지만, XML은 데이터를 저장 및 전송하는데 사용된다.
또한 HTML의 태그는 미리 정의되어있지만, XML에서는 고유한 태그를 만들고 정의한다.
XML은 대/소문자를 구분하지만 HTML은 구분하지 않는다.
JSON과 XML모두 데이터교환형식의 일종이다.
하지만 자바스크립트의 객체형태인 JSON에 비해 XML은 닫는 태그가 계속해서 들어가기 때문에 JSON에 비해 무겁다.
또한 XML을 parsing하는것은 외부라이브러리를 사용하는 등 JSON에 비해 더 많은 노력이 필요하다.
그렇다면 JSON만 사용하면 되지 왜 XML이 존재하는것일까?
XML은 대표적으로 sitemap.xml에 사용된다.
sitemap.xml은 서비스 내의 모든 페이지를 리스트업한 데이터로, 사이트가 매우 크거나 링크가 종속적으로 연결되지 않은 경우 크롤러가 일부 페이지를 누락하는 일이 있는데 이를 sitemap.xml이 모든 페이지들을 크롤링할 수 있도록 도와준다.
이외에도 XML역시 데이터를 전송하는 역할 등을 수행한다.