YAML

YAML Ain’t Markup Language

Yey Another Markup Language

데이터 직렬화를 위한 텍스트 기반 형식이며 데이터를 구조화하고 표현 일반적으로 설정 파일, 데이터 전송 및 구성 파일, 로그 파일 등과 같은 다양한 목적으로 사용 들여쓰기를 사용하여 계층적 데이터 구조를 표현하며 확장자를 .yml or .yaml 을 사용 다양한 프로그래밍 언어와 호환

YAML 문법

1. 데이터 정의

YAML은 기본적으로 데이터를 정의 할 때, key: value 형태로 데이터를 정의합니다. 이때 콜론 : 뒤에는 키와 값을 구분하기 위해 반드시 공백문자(whitespace)가 있어야 합니다.

사용가능한 데이터 타입으로는 Number, String, Boolean이 있으며, 문자열(String)에 n , @ 등의 특수 문자가 포함된 경우에만 따옴표(" ")를 사용하여 작성합니다. Boolean 값은 True/False 외에도 On/Off, Yes/No 로 작성할 수 있습니다.

#주석
Fruit: Apple
Quantity: 5
Origin: Chungju

그 뿐만 아니라, YAML 파일에서 주석을 작성해야 할 때는 해당 줄의 맨 앞에 # 을 작성합니다.

2. Array / Lists

배열이나 리스트 구조의 데이터를 표현하고 싶을 때는 - 을 사용합니다. - 는 배열의 한 요소를 가리킵니다. 이때 각 요소들의 순서가 중요합니다. 또한 -를 이용하여 Array/Lists를 표현할 수도 있지만, 같은 의미로 [ ]도 사용됩니다. [ ]가 사용된 경우, 대괄호 안의 요소가 문자열(String)이라면 " " 를 사용합니다.

# 배열과 요소 예제
fruits:
  - Apple
  - Orange
  - Banana

fruits: [Apple, Orange, Banana]

3. Dictionary / Map

계층 구조를 표현하고 싶은 경우, 기본적으로 2칸 혹은 4칸의 들여쓰기를 사용합니다. 들여쓰기를 사용할 때, 각 아이템에 대해서 꼭 같은 수의 공백문자를 사용하여 들여쓰기를 해야합니다. 위의 Array/List 형식과는 다르게 요소들의 순서가 중요하지 않습니다.

#YAML

Fruits:
	Name: Apple
	Quantity: 5
	Origin: Chungju

Vegetables:
	Name: Lettuces
	Quantity: 10
	Origin: Daekwan

위의 예시에서 Name, Quantity, Origin은 같은 수만큼의 들여쓰기를 했기 때문에 같은 계층으로 각각 Fruits와 Vegetables에 속합니다. 이와 같이 들여쓰기를 통해 어떤 계층에 속하는지 달라지기 때문에, 들여쓰기에 주의해야 합니다.

4. Advanced

위의 데이터 구조를 섞어서 사용할 수도 있습니다. 아래의 예시는 Dictionary 구조를 포함하고 있는 배열의 형태를 표현하고 있습니다. 더불어 YAML로 작성된 것을 JSON으로 작성한 것과 비교해보면, 가독성 면에서 구조화된 데이터를 쉽게 표현할 수 있는 방법이 무엇인지 알 수 있습니다.

#YAML

Fruits:
	- Banana:
			Calories: 105
			Fat: 0.4g
			Carbs: 27g

	- Grape:
			Calories: 62
			Fat: 0.3g
			Carbs: 15g
#JSON

{
  "Fruits": [
    {
      "Banana": {
        "Calories": 105,
        "Fat": "0.4g",
        "Carbs": "27g"
      }
    },
    {
      "Grape": {
        "Caloreis": 62,
        "Fat": "0.3g",
        "Carbs": "15g"
      }
    }
  ]
}

5. Multi-lines

값으로 여러 행의 문장을 작성할 때 기본적으로는 n 을 사용합니다. 예를 들면 다음과 같습니다.

example: "this is multiline string n and this is nextline n and nextline n"

하지만 n 을 사용하지 않고, |, >를 사용하여 줄바꿈을 할 수도 있습니다. 각각의 특징은 다음과 같습니다.

> : 이 문자는 한 줄을 모두 비웠을 때만 줄바꿈으로 인식을 하고, 그냥 줄바꿈을 할 때에는 공백문자로 인식합니다.

#YAML

example1: >
  this is multiline string
  and this is nextline
  and nextline

example2: >
  this is multiline string

  and this is nextline
  and nextline
#JSON

{
  "example1": "this is multiline string  and this is nextline  and nextlinen"
}


{
  "example2": "this is multiline string nand this is nextline  and nextlinen"
}

| : 이 문자는 모든 줄바꿈을 인식하며, 마지막 문장의 끝도 마찬가지로 줄바꿈으로 인식합니다.

#YAML

example1: |
  this is multiline string
  and this is nextline
  and nextline
#JSON

{
  "example1": "this is multiline string nand this is nextline nand nextlinen"
}

📖 YAML 공식문서 JSON 공식문서

Leave a Comment