XML, JSON, YAML

현곤·2024년 11월 26일

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

컴퓨터는 데이터를 전송할 때, 줄바꿈이나 띄어쓰기 없이 한 줄로 된 데이터만 주고 받는다.

이러한 데이터는 사람이 읽기엔 가독성이 많이 떨어진다.

사람이 작성할 때에는 보기 편한 방식으로 작성하고,
전송할 때는 엔터와 탭을 모두 삭제한 형태인 한 줄의 문자열로 전송된다.

이렇게 한 줄로 만드는 것을 minify라고 한다.

단순히 사람이 작성한 데이터를 한 줄로 바꿔 전송해준다는 개념은 아니다.

테이블 형태와 같이 어떠한 구조를 갖는 데이터를 전송할 수 있도록 해주는 역할이 가장 크다.

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

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


img

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

XML

img

특징

  • XMLHTML (XML 형식으로 web을 표현할 수 있도록 만든 것) 과 같이 <태그>라는 형식을 사용한다.

  • XML은 각각의 태그명이 항목명이 되고, 그 사이에 내용이 들어가는 형식을 띈다.

  • 순수 데이터값이 들어갈 수 있고, 그 안에 다른 태그들이 중첩으로 들어갈 수도 있다.
    HTML 처럼

단점

  • 태그들을 일일이 열고 닫아야해서 전체 글자수도 늘어나 장황해보임

  • 작성하기 번거로움

  • 인덴테이션 형태 ( 줄바꿈으로 보기 좋게 구분된 상태 ) 로 바꾸어도
    한 눈에 알아보기엔 좋은 형태가 아님

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


JSON

img

특징과 장점

  • 자바 스크립트의 객체 표기법인 JSON은 보다 간결한 형태로 구조화된 정보를 표시

  • 훨씬 눈에 잘 들어오고, 코드량도 XML에 비해 적은 것을 볼 수 있음

  • 간결하고 작성하기 쉽기에 많은 분야에서 쓰이는 XML을 대체해나감

하지만 XMLJSON에 뒤떨어지기만 하는 것은 아니다.

단점

  • JSON은 문법 오류에 취약하다.
    콤마 하나 잘못치거나, 브라켓 하나를 빼먹으면 문서 자체가 해석이 안된다.

  • XML은 열고 닫는 태그가 있어 오기가 있는 부분의 바깥 쪽은 컴퓨터가 읽을 수 있다.

  • XML과 달리 주석을 달 수 없다.

  • XML요구되는 사용처마다 요구되는 구조와 형태를 잘 거쳤는지
    스키마라는 것을 통해 검증할 수 있다.
    어디에 무엇이 있어야하는지 등의 요구사항을 XSD 형식의 문서로
    명시해놓은 문서라고 보면 된다.

( 왼쪽이 XML, 오른쪽이 스키마 )

img

어떤 엄격한 형식의 XML이 필요한 곳에서 문서를 미리 검증할 때 유용하게 사용할 수 있다.

구글에 XML XSD 라는 것을 검색해보면, XML에서 XSD를 유추하거나, XSDXML
검사하는 등 무료 기능을 사용해 볼 수 있다.

JSON은 자체적으로 이런 기능이 없기에, 직접 프로그래밍 해서 만들어야한다.

이와 같은 각각의 장단점을 고려해 활용해야 한다.

  • 안전성이 요구되는 곳에는 XML
  • 가벼움이 요구되는 곳에는 JSON

YAML ( 야물 )

img

특징

  • YAML은 데이터를 한 줄로 실어보내는 것이 아닌, 사람이 보기 좋게 작성하는 데 목적을 둔다.
    YAML을 작성할 때는 파이썬처럼 줄바꿈, 태그가 필요 요소다.
    이를 어길 시 정보가 파괴되기 때문에, YAML 문서는 minify 하지 않는다.

  • 인덴팅 ( 들여쓰기 )을 사용해서 직관적으로 정보 구조를 표시,
    배열 요소들은 대시를 사용해서 표시한다.

  • 주석도 사용 가능하고 특히 편리한 점은
    상속을 사용해 여러 데이터를 효율적으로 작성할 수도 있다.

  • 이처럼 쓰고있는 사람의 편이를 우선시하는 형식이기 때문에
    도커컴포즈, 스프링 등의 설정 파일에 많이 사용된다.

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


참고 영상 : 얄팍한 코딩사전

profile
코딩하는 곤쪽이

0개의 댓글