JSON & XML

bearMin·2024년 7월 20일

들어가면서

서버와 클라이언트가 데이터를 주고받을 때 사용되는 자료 형식에는 여러가지가 있다. 그 중 대표적으로 XML과 JSON을 얘기하곤 하는데 각각 어떤 특징을 지니고 있는지 한번 알아보자!


XML이란?

정의는?

태그로 데이터를 표현하는 방식의 마크업 언어

XML은 EXtensible Markup Language의 약자로, 태그를 사용하는 마크업 언어이다. 이때 개발과 관련해서 공부를 해봤다면 태그라고 했을 때 생각나는 다른 한가지가 있을 것이다.

맞다! 바로 그 HTML과 같은 방식이다. 다만 XML은 HTML처럼 미리 태그가 지정되어있지 않고, 사용자가 직접 정의할 수 있으며 정보 사이트에서 RSS로 데이터를 제공할 때 사용한다.


💡 RSS?
블로그처럼 컨텐츠 업데이트가 자주 일어나는 웹사이트에서 업데이트된 정보를 
쉽게 구독자들에게 제공하기 위해 XML을 기초로 만들어진 데이터 형식

특징은?

이러한 XML은 과연 어떠한 특징이 있을까?

  1. 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.
  2. 다른 시스템끼리 다양한 종류의 데이터를 쉽게 교환할 수 있도록 해준다.
  3. 고정된 태그가 없어서 필요에 따라 언제든지 새롭게 만들 수 있다. ⇒ 확장성이 좋다!
  4. 데이터를 보여주지 않고 데이터를 전달하고 저장하는 것을 목적으로 한다.
  5. 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어진다.

형식은?

태그의 형식을 가진다고 하는데 말로만 하면 어려우니 예시를 살펴보자.

<animation>
		<name>귀멸의 칼날</name>
		<season>4</season>
</animation>

위에 처럼 태그를 지정하여 해당 태그 안에 들어갈 데이터를 작성할 수 있다. 태그는 항상 여는 태그와 닫는 태그로 이루어져 있다. 하나라도 없으면 오류가 생기니 사용할 때 꼭 주의하자..


또한 위처럼 animation 안에 name과 season이 있는 정보의 계층을 제공하는 트리 구조이다.

이러한 형식들 덕분에 데이터가 어떤 것을 의미하는지 직관적으로 알 수 있지만 데이터가 많아질수록 장황하고 복잡해지며, 데이터 하나당 여는 태그와 닫는 태그가 사용이 되기 때문에 용량을 많이 차지하는 단점이 있다.

이를 극복하고자 JSON이 등장했다..!


JSON이란?

정의는?

속성-값 또는 key-value 쌍으로 이루어진 데이터를 전달할 때 사용하는 표준 형식

JSON은 JavaScript Object Notation의 약자이다. Java가 아니라 JavaScript다.. 가끔 헷갈리는 사람들이 있으니 주의하자.. 즉 JavaScript 객체 표기법으로 해당 표기법은 key와 value 쌍을 가진다.


JSON은 XML의 대안으로 조금 더 쉽게 데이터를 교환하고 저장하기 위해서 만들어진 텍스트 기반의 데이터 교환 표준이다. 텍스트 기반이기 때문에 JavaScript에서만 사용을 할 수 있는 것이 아닌 어떠한 프로그래밍 언어에서도 JSON 데이터를 읽고 사용할 수 있다. 실제로 나 역시 개발을 할 때 XML이 아닌 JSON 형식을 사용해서 데이터 교환을 한다.


특징은?

그렇다면 JSON의 특징에는 무엇이 있을까?

  1. JavaScript를 확장해서 만들어졌다.
  2. JavaScript의 객체 표기법을 따른다.
  3. 사람과 기계가 읽기 편하도록 만들었다.
  4. 프로그래밍 언어와 운영체제에 독립적이다.

형식은?

XML과 마찬가지로 JSON의 형식에 대해 예시를 보면서 알아보자.

"animation" : [
		{
				"name": "귀멸의 칼날",
				"season": 4
		},
		{
				"name": "나의 히어로 아카데미아",
				"season": 7
		}
]

위처럼 nameseason이라는 key 값에 각각 귀멸의 칼날4라는 value 값을 가진다.

또한 animation 에 list를 표현하고 싶을 때는 [ ] 를 사용하여 표현할 수 있다.


이때 주의할 점은 문자열로 된 데이터는 “ “ 안에 작성을 해야하고, 문자열이 아닌 숫자나 true, false 같은 데이터는 그냥 작성을 해주면 된다. 그리고 “귀멸의 칼날” 과 같이 value 값 뒤에 다른 key 값이 올 경우 , 을 사용하여 구분을 해줘야한다.


둘이 뭐가 다르지?

공통점은?

뭐가 다르냐고 물어봐놓고 공통점부터 나와서 당황했으리라 생각이 든다. 하지만 공통점을 알아야 차이점이 더 눈에 잘 보이는 법! 우선 공통점부터 알아보자.


  1. 데이터를 저장하고 전달하기 위해서 만들어졌다.
  2. 기계와 사람 모두 쉽게 읽을 수 있다.
  3. 계층적인 데이터 구조를 가졌다.
  4. 다양한 프로그래밍 언어에 의해 파싱될 수 있다.
💡 파싱(Parsing)이란?
어떤 큰 자료에서 원하는 정보만 가공하고 뽑아서 원하는 때에 불러올 수 있게 하는 것 
파싱을 수행하는 프로그램을 파서(Parser)라고 한다
  1. 데이터 직렬화 형식이다.
💡 직렬화(serialization)란?
객체 데이터를 통신하기 쉬운 포맷 형태로 만들어주는 작업

차이점은?

자 이번엔 차이점에 대해서 알아보자. 이 차이점은 공통점과 연관 지어서 생각하면 좋을 것 같다!

  1. 데이터를 표현하는 방식과 구조가 다르다.
    JSONkey-value 쌍을 사용하고 맵과 유사한 구조를 띄지만, XML은 데이터 양쪽에 태그를 사용하여 표현하고 정보 계층을 제공하는 트리 구조를 띈다.

  1. JSON은 XML보다 길이가 짧고 속도가 빠르다.
    이 부분은 구문의 차이가 발생한다. JSON은 간결하며, 읽고 쓰기 쉽다. 하지만 XML은 조금 더 장황하고 특정 문자를 대신 참조하기도 한다. 예를 들어, 부등호 표시의 경우 태그 사이에 들어간다면 잘못 인식이 되는 경우가 있기에 ⁢ 을 대신 사용한다.

    또한 XML은 XML 구문 분석기를 사용하여 분석하는데 이는 프로세스가 느려지고 복잡해지는 경우가 많다. JSON은 표준 JavaScript 함수로 조금 더 빠르게 구문 분석을 할 수 있다.


  1. JSON은 배열을 사용할 수 있지만, XML은 배열을 사용할 수 없다.
    데이터를 배열로 넘겨주거나 받아와야하는 경우가 생기는데 이때 JSON은 배열로 넘겨주고 받아오는 것이 가능하지만 XML은 둘다 불가능하다.

그래서 뭘 사용해야할까?

이렇게 두가지가 있다면 우리는 결국 둘 중 하나를 선택해야하는 때가 온다. 이렇게 열심히 XML과 JSON에 대해서 알아봤으니 이제 둘 중 뭘 쓰는 게 좋을지 생각을 해봐야할 시간이다.


현재 개발자들은 JSON을 더 많이 사용하는 추세이다.

첫번째 이유로는 현재 개발자들은 주로 애자일(Agile) 개발 방법론을 따른다. 애자일 개발 방법론이란 일정한 주기를 가지고 빠르게 제품을 출시하여 고객의 요구사항, 변화된 환경에 맞게 요구를 더하고 수정해나가는 탄력적인 방법론을 뜻하는데, 이를 위해서는 유연하고 신속한 데이터 전달이 필요하다. 이에 적합한 것이 JSON이다.


두번째 이유로는 XML은 초기 작업이 너무 많다는 것이다. XML을 사용하기 위해서는 데이터를 구조화하고 문서와 코드 작성법을 미리 생각해야하지만 JSON은 유연하고 초기 작업이 적어 빠르게 실행할 수 있다는 점이다.


때문에 신규 프로젝트들의 대부분이나 웹 앱의 경우에는 JSON을 이용하는 것이 좋다. 그렇다면 XML은 아예 사용을 하지 않는 것인가? 그렇지 않다.


그래픽 파일이나 문서 등 바이너리(Binary) 코딩된 파일은 XML이 더 적합하다. 또한 JSON은 데이터의 무결성을 사용자가 직접 검증을 해줘야 한다. 하지만 XML은 스키마를 사용하여 데이터의 무결성을 검증할 수 있다.

이와 같은 장점들이 필요한 곳에서는 여전히 XML을 사용하고 있다!


정리하자면

XML과 JSON은 데이터를 저장하고 전달하기 위해서 사용이 된다!

XML은 태그의 형식을 사용한다!

JSON은 key-value 쌍의 형식을 사용한다!

현재는 JSON이 많이 쓰인다!

profile
소소한 공부기록

0개의 댓글