XML, JSON, YAML 각각의 특징 / 장단점 / 차이점

방충림·2023년 3월 20일
4

CS

목록 보기
15/26
post-thumbnail

XML, JSON, YAML은 공통적으로 데이터를 기술하는 데 사용할 수 되는 형식들이다.

컴퓨터는 데이터를 전송할 때, 사람처럼 줄바꿈이나 띄어쓰기 없이 한줄로 된 데이터 만을 주고받는다. 이러한 데이터는 사람이 읽기엔 가독성이 많이 떨어지게 된다. 그래서 사람이 작성할 때에는 보기 편한 방식으로 작성을 한 뒤 전송할 때는 엔터와 탭을 모두 삭제한 형태로 한줄의 문자열로 전송된다. 이렇게 한 줄로 만드는 것을 minify라고 한다.

이것이 단순히 사람이 작성한 데이터를 한줄로 바꿔 전송해준다는 개념은 아니다.
테이블 형태와 같이 어떠한 구조를 갖는 데이터를 전송할 수 있도록 해주는 역할이 가장 크다.

구조화된 정보를 주는 쪽과 받는 쪽이 의도에 맞게 잘 주고받기 위해서는 양측 사이에 잘 설계되어 합의된 어떤 형식이 필요할 것이다.

여기에 사용되는 형식중 가장 널리 사용되는 것들이 XML JSON이다.


다음과 같이 웹상에 구조화된 데이터가 있다.


이와 같이 복합적인 구조를 지닌 이 정보를 어떻게 서버-클라이언트 간에 주고받기 적합한 한줄의 데이터로 표현하려면 어떻게하면 좋을까?

여기에 XML이 사용될 수 있다.

XML

특징

  • XML은 HTML(XML형식으로 web을 표현 할 수 있도록 만든 것)과 같이 <태그> 라는 형식을 사용한다.
  • XML은 각각의 태그명이 각각의 항목명이 되고, 그 사이에 내용이 들어가는 형식을 띈다.
  • 순수 데이터값이 들어갈 수도 있고, 그 안에 다른 태그들이 중첩으로 들어갈 수도 있다. 정말 HTML처럼 말이다.

단점들도 눈에 보인다.

  • 태그들을 일일이 열고 닫아야하니 전체 글자수도 늘어나 장황해보인다.
  • 작성하기 번거롭다.
  • 인덴테이션 형태(줄바꿈으로 보기좋게 구분된 상태)로 바꾸어도 한 눈에 알아보기엔 좋은 형태는 아니다.

이러한 면에서 강점을 갖는 또다른 형식이 바로 JSON이다.

JSON

특징 / 장점

  • 자바스크립트의 객체 표기법인 JSON은 보다 간결한 형태로 구조화된 정도를 표시한다.
  • 훨씬 눈에 잘 들어오고 코드량도 XML에 비해 적은 것을 볼 수 있다.
  • 간결하고 작성하기 쉽게 때문에 많은 분야에서 쓰이는 XML을 대체해나가고 있다.

단점

하지만 XML이 JSON에 뒤떨어지기만 하는 것은 아니다.

  • JSON은 문법 오류에 취약하다. 콤마하나 잘못치거나 브라켓 하나를 빼먹으면 문서 전체가 해석 불가가 된다. 반면 XML은 열고 닫는 태그가 있어 오기가 있는 부분의 바깥쪽은 컴퓨터가 읽을 수 있다.
  • 또한 XML과 달리 주석을 달 수 없다.
  • XML은 요구되는 사용처마다 요구되는 구조와 형태를 잘 거쳤는지 스키마 라는 것을 통해 검증할 수 있다. 어디안에 무엇이 있어야하는지 등의 요구사항을 XSD형식의 문서로 명시해놓은 문서라고 보면 되겠다.

    왼쪽이 XML 오른쪽이 스키마이다.
    어떤 엄격한 형식의 XML이 필요한 곳에서 문서를 미리 검증할 때 유용하게 사용될 수 있겠다.
    구글에 XML XSD라는 것을 검색해보면 XML에서 XSD를 유추하거나, XSD로 XML을 검사하는 등 무료 기능들을 사용해 볼 수 있다.
    JSON은 자체적으로는 이런 기능이 없기 때문에 직접 프로그래밍 해서 만들아야한다.

이와 같은 각각의 장단점을 고려해서 안전성이 요구되는 곳에는 XML이 가벼움을 중시하는 곳에는 JSON이 활용된다.

YAML [야물]

특징

  • yaml은 데이터를 한줄로 실어보내는 것이 아니라. 사람이 보기좋게 작성하는 데 목적을 둔다. - yaml을 작성할 때는 파이썬처럼 줄바꿈과 태그가 필요 요소이다. 이를 어기면 정보가 파괴되기때문에 yaml 문서는 minify를 하지 않는다.
  • 인덴팅(들여쓰기)을 사용해서 직관적으로 정보구조를 표시하고, 배열요소들은 대시를 사용해서 표현한다.
  • 주석도 사용이 가능하고, 특히 편리한 점은 상속을 사용해서 여러 데이터들을 효율적으로 작성할 수도 있다는 것이다.
  • 이처럼 쓰고있는 사람의 편의를 우선시하는 형식이게 때문에 도커컴포즈, 스프링 등의 설정 파일에 많이 사용된다.

구글에 JSON to yaml을 검색하면 JSON을 yaml로 바꾸었을 때의 결과를 확인 할 수 있다.



참고문헌 : 얄팍한 코딩사전

profile
최선이 반복되면 최고가 된다.

0개의 댓글