본문 바로가기

Web Sever 개발과 CS 기초/CS 지식

YAML 개념과 특징

개요 목적

최신 SpringBoot에서는, 설정 파일을 YAML 형식으로 구현하는 것이 인기다. YAML 파일로 설정을 하게 되면 각 요소들을 들여쓰기로 나누어 주기 때문에 한눈에 설정을 파악하기 좋기 때문이다.

YAML의 필요성과 개념

YAML은 데이터 구조와 내용 이해를 돕는 데이터 포맷 방식 중 하나이다. 홍길동이란 참가자 정보를 데이터로 나타내보자. 포맷 방식이 없다면, 참가자,홍길동,63,57.170으로 데이터가 구성된다. 어떤 숫자가 나이를 나타내는지, 몸무게를 나타내는 지 데이터 내용을 파악하기 힘들다.

YAML의 데이터 포맷 방식을 이용하면 이렇게 표현할 수 있다.

참가자:
  name: 홍길동
  age: 63
  weight: 57
  height: 170

위와 같은 데이터는 포맷 방식 없이도, 단순한 문자열로 나타낼 수 있다. name: 홍길동, age: 63, weight: 57, height: 170. 하지만 데이터 포맷 형식이 반드시 필요한 곳이 있는데, 그것은 구조화된 데이터를 표현할 때이다. 배열이나, 객체 안에 객체가 있는 복잡한 구조의 데이터는 포맷 형식이 있어야 한다. 그래야 다른 사람, 컴퓨터가 이해할 수 있는 데이터로 변형이 가능하다. 아래 구조화된 홍길동 예시에서 알아보자.

객체 안에 객체가 있고, 다양한 배열이 존재하는 복잡한 데이터를 통해 컴퓨터와 다른 사람이 이해 가능한 데이터 형식으로 만들면 아래와 같다.

<YAML으로 구조화된 데이터를 표현>

name: 홍길동
age: 23
career:
  highSchool:
    - 올림피아
  university:
    - 프로그래밍대회
    - 네이버인턴
advantage:
  - 성실함
  - 꾸준함
  - 착함

YAML을 포함해서, 이렇게 데이터의 내용과 구조를 쉽게 이해하게 해주는 것,. 데이테 포맷 형식을 제공하는 언어를 Markup 언어라고 한다. Markup 언어에는 YAML 이외에 XML, JSON 등이 있다.

YAML 특징

들여쓰기

YAML의 다른 Markup언어와 가장 크게 구별되는 특징은 들여쓰기로, 데이터 계층 구조를 표현하는 것이다. 그로 인해 사람이 보고 이해하기 쉬운 구조로 데이터를 작성이 가능하다.

<YAML의 들여쓰기를 사용하여, 계층 구조를 표현한 예>

홍길동:
  나이: 22
  키: 180
  혈액형: AB

JSON의 경우 “{ }”를 사용해, 계층 구조를 표현한다.

 {"홍길동": {"나이":22, "키":180, "혈액형":"AB"}}

Key-Value 형태의 데이터 정의

Key : Value 형식으로 데이터를 정의한다.

주의 사항

: 와 Value 사이에 반드시 빈칸이 하나 들어가야 한다.

이름: 홍길동(O)

이름:홍길동(X)

“-”를 사용하여 배열을 정의

배열의 시작 데이터에 “-”를 붙여서, 여러 데이터를 담은 배열을 표현할 수 있다.

홍길동:
  장점:
    - 잘생김
    - 똑똑함
    - 착함
  단점:
    - 게으름
    - 소심함

주의 사항

“-” 뒤에 빈칸 하나를 반드시 넣어줘야 한다.

JSON은 “[ ]”을 사용하여 배열을 표현한다.

{
  "홍길동": {
    "장점": ["잘생김", "똑똑함", "착함"],
    "단점": ["게으름","소심함"]
  }
}

#을 사용하여 주석을 사용

#을 사용해서, 주석을 사용할 수 있다.

#참가자 정보
홍길동:
  나이: 22
  키: 180
  혈액형: AB

“|”, “>” 으로 줄바꿈 설정하기.

“|”는 줄 바꿈 마다 \n을 설정한다.

“>” 글 마지막에만 \n을 설정한다.

블랭핑크:
  - 이름: 지수
    인사: |
      안녕하세요 저는
      지수입니다.
  - 이름: 제니
    인사: >
      안녕하세요 저는
      제니입니다.

->

{
  "블랭핑크": [
    {
      "이름": "지수",
      "인사": "안녕하세요 저는\\n지수입니다.\\n"
    },
    {
      "이름": "제니",
      "인사": "안녕하세요 저는 제니입니다.\\n"
    }
  ]
}

'Web Sever 개발과 CS 기초 > CS 지식' 카테고리의 다른 글

JSON 개념과 특징  (0) 2022.08.14