5 min to read
YAML? / TIL
YAML 이란?
YAML ?
구조를 가진 데이터 표현 양식의 한 종류 (JSON, XML 등)
데이터를 주고 받을 때 서로 쉽게 이해하기 위해서 데이터를 형식에 맞춰 사용한다.
(확장자 : .yml / .yaml)
- YAML은 기본적으로 데이터를 정의할 때,
key: value
형태로 정의한다. (:
뒤에 키와 값을 구분하기 위한 공백 문자가 있어야 한다.) - 사용 가능한 데이터 타입 : Number, String, Boolean / 특수문자가 포함된 경우
따옴표(" ")
를 사용해 작성한다. - 주석을 작성해야할 때는 해당 줄의 맨 앞에
#
를 작성한다.
- 배열이나 리스트 구조의 데이터를 표현할 땐
'-'
을 사용한다. - 아래 yaml 파일은 내용이 같아 보이지만 다른 파일이다.
'-'
외에'[]'
도 사용될 수 있고, 대괄호 안의 요소가 문자열이면" "
을 사용한다.
# 1번
Fruits:
- Orange
- Apple
- Banana
Vegetables:
- Carrot
- Lettuce
# 2번
Fruits:
- Apple
- Orange
- Banana
Vegetables:
- Lettuce
- Carrot
- 계층 구조를 표현하고 싶을 때, 2칸 or 4칸 들여쓰기를 사용한다.
#YAML
Fruits:
- Banana:
Calories: 105
Fat: 0.4g
Carbs: 27g
- Grape:
Calories: 62
Fat: 0.3g
Carbs: 15g
위 yaml 파일을 json 형식으로 작성하면 다음과 같다.
#JSON
{
"Fruits": [
{
"Banana": {
"Calories": 105,
"Fat": "0.4g",
"Carbs": "27g"
}
},
{
"Grape": {
"Caloreis": 62,
"Fat": "0.3g",
"Carbs": "15g"
}
}
]
}
줄 바꿈
'>'
: 한 줄을 비웠을 때만 줄 바꿈으로 인식하고, 그냥 줄바꿈을 하면 공백문자로 인식한다. ```yaml #YAML example1: > this is multiline string and this is nextline and nextline
example2: > this is multiline string
and this is nextline and nextline
```json
#JSON
{
"example1": "this is multiline string and this is nextline and nextline\n"
}
{
"example2": "this is multiline string \nand this is nextline and nextline\n"
}
'|'
: 모든 줄바꿈을 인식하며, 마지막 문장의 끝도 마찬가지로 줄 바꿈으로 인식한다.#YAML example1: | this is multiline string and this is nextline and nextline
#JSON { "example1": "this is multiline string \nand this is nextline \nand nextline\n" }
JSON ?
JavaScript Object Notation의 줄임말로, 데이터 교환을 위해 만들어진 객체 형태의 포맷이다.
JSON은 키와 값 사이, 그리고 키-값 쌍 사이에는 공백이 있으면 안된다.
- JavaScript의 객체와 JSON의 차이
JavaScript 객체 | JSON | |
키 | 키는 따옴표 없이 쓸 수 있음 | 반드시 큰 따옴표를 붙여야 함 |
문자열 값 | 문자열 값은 어떠한 형태의 따옴표도 사용 가능 | 반드시 큰 따옴표로 감싸야 함 |
// 메시지를 담고 있는 객체 message
const message = {
sender: "seay0",
receiver: "fairy",
message: "Hello my friend!",
createdAt: "2023-04-10 10:10:10"
}
위와 같은 객체 형태로 메시지를 전송하려고 할 때는, 메시지 발신자와 수신자가 같은 프로그램을 사용하거나, 문자열처럼 범용적으로 읽을 수 있는 형태여야 한다.
JSON과 객체의 형태 반대로 변환하는 방법
JSON.stringify : Object type을 JSON으로 변환한다.
이 과정을 직렬화(serialize)
라고 한다.
JSON.parse : JSON을 Object type으로 변환한다. 이 과정을 역직렬화(deserialize)
라고 한다.
// message 객체를 JSON으로 변환하는 메소드 (JSON.stringify)
let transferableMessage = JSON.stringify(message)
console.log(transferableMessage)
// `{"sender":"seay0","receiver":"fairy","message":"Hello my friend!","createdAt":"2023-04-10 10:10:10"}`
console.log(typeof(transferableMessage))
// `string`
// 직렬화된 JSON을 message 객체로 변환하는 메소드 (JSON.parse)
let packet = `{"sender":"seay0","receiver":"fairy","message":"Hello my friend!","createdAt":"2023-04-10 10:10:10"}`
let obj = JSON.parse(packet)
console.log(obj)
/*
* {
* sender: "seay0",
* receiver: "fairy",
* message: "Hello my friend!",
* createdAt: "2023-04-10 10:10:10"
* }
*/
console.log(typeof(obj))
// `object`