본문 바로가기

XML vs JSON vs YAML

by forestlim 2021. 3. 15.
728x90
반응형

XML, JSON, YAML 은 모두 데이터를 표현하는 형식입니다. 하지만 형태와 문법이 조금씩 다르고 쓰임새가 다르기 때문에 차이점을 정리해보고자 한다. 각각의 쓰임새가 모두 다르기 때문에 어느 하나만을 써야 한다고 말할 수 없고 상황에 맞는 것을 쓰면 된다. 

 

1. XML(Extensible Markup Language)

XML의 경우 데이터를 표현하기 위하여 많이 사용되어 온 방식으로 태그로 표현되며 이는 HTML과 흡사한 구조를 가지고 있다. 그러나 XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌습니다. XML은 트리계층 구조를 가지고 있고 루트 요소부터 시작해 여러 개의 자식을 계층적으로 포함하게 됩니다. 

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user>
        <name>홍길동</name>
        <score>100</score>
        <subject>
            <element>Software</element>
            <element>Math</element>
        </subject></user>
    <user>
        <name>이순신</user>
        <score>97</score>
        <subject>
            <element>Korean</element>
            <element>History</element>
            </subject></user>
</users>

** XML문법

   XML문서는 규칙적인 형태를 가지고 있습니다. 태그와 태그 사이에 요소를 적어 넣는 방식으로 구성됩니다. 이때, 시작 태그와 종료 태그는 대소문자까지 모두 동일해야 합니다. 또한 태그 안에 속성을 명시할 때는 따옴표를 넣어주어야 합니다. 

<Title color='black' type='bold'>글자</Title>

** XML주석

   XML은 주석을 넣을 수 있습니다. <!--주석 내용--> 형태로 사용

 

XML 문법적인 오류가 발생해도 각각 태그로 구분되어 있기 때문에 다른 태그들은 컴퓨터가 읽을 있습니다. 따라서 안정성을 요구하는 곳에서 XML 사용하면 좋습니다

 

2. JSON(JavaScript Object Notatino)

JSON 또한 XML 비슷하게 데이터를 처리하기 위한 형식입니다일반적으로 서버와의 통신 규악인 REST API 사용할 가장 많이 사용되어, 최근에는 XML보다 JSON 형식이 채택되고 있습니다

 

** JSON 예시

{
    "student": [
      {
        "name": "홍길동",
        "lastName": "홍"
      },
      {
        "name": "이순신",
        "lastName": "이"
      },
      {
        "name": "이화림",
        "lastName": "이"
      } 
    ]
  }

 

** JSON 주석

  JSON은 XML과 다르게 주석 사용이 불가능하다.

 

** JSON 문법

  JSON은 파이썬의 딕셔너리 형식과 비슷하다고 생각하면 됩니다. 

 

JSON 문법적인 오류에 취약하기 때문에 문법적인 오류가 하나라도 발생하면 문서 전체가 해석 불가능한 상태가 된다. 따라서 가벼움을 중시하는 곳에서는 JSON 사용하면 좋습니다

 

3. YAML

YAML 또한 JSON 비슷하게 사람이 읽기 쉬운 형태의 데이터 표현 형식입니다. YAML XML 문법적으로 유사합니다. YAML에서도 주석이 사용 가능하고 개행, 공백으로 블록을 인식합니다. 쓰고 있는 사람의 편의를 우선시하기 때문에 docker compose spring 설정 파일에 자주 사용하게 됩니다

 

**YAML 예시

users:

  1:

    name: 홍길동

    score: 100

    subject:

      - Software

      - Math

  2:

    name: 이순신

    score: 97

    hobby:

      - Korean

      - History



 

** YAML 주석

  YAML은 주석 사용이 가능합니다. 

 

** YAML 문법

  YAML 개행, 공백으로 불록을 인식합니다. 다만, 태그를 사용하지 않고 공백 위주로 데이터를 구분하므로  줄로 작성할 없습니다

728x90
반응형

'' 카테고리의 다른 글

http vs https  (0) 2021.06.27

댓글