티스토리 뷰

Environment

YAML, YML 파일 이해하기

park_lego 2024. 12. 10. 21:21
반응형

 

입사할 때에는 프론트엔드 개발자(리액트)였지만, 이번 프로젝트에서는 앵귤러 + 자바(스프링 부트)로 된 프로젝트를 개발하게 됐다.

 

프론트를 시작하면 package.json을 먼저 살펴보듯이 application.yml을 먼저 살펴보았다.

 

파이썬처럼 Indent로 구분하나 보군.

string은 큰 따옴표("")로 묶지 않아도 되는구나.

대시(-) 있는 것과 없는 것의 차이는 뭘까?

...

 

문법이 궁금해졌다.

 

YAML 파일이란?

 

YAML 파일은 .yml 또는 .yaml 확장자를 사용하며 특정 구문 규칙을 따른다.

[.yaml 과 .yml 차이점]

결론부터 말하자면 yaml과 yml파일 확장자는 모두 해석 및 구문이 동일하다.

이렇게 분리된 이유는, 옛날 Windows에서 Extensions는 
파일확장자가 3자로 제한되는 특성이 있었기 때문이다.

 

- YAML은 JSON의 상위 집합이므로 YAML에서 JSON 파일을 사용할 수 있다고 한다.

- JSON 과 달리 주석을 사용할 수 있다.

- 중괄호, 대괄호, 닫기 태그 또는 따옴표와 같은 통상적인 형식 기호는 없다.

- Python 스타일의 들여쓰기를 사용해 구조를 결정하고 중첩을 표시하므로 더 읽기 쉽다.

 

yaml 파일 기본 예시

#Comment: This is a supermarket list using YAML
#Note that - character represents the list
---
food:
  - vegetables: tomatoes #first list item
  - fruits: #second list item
      citrics: oranges
      tropical: bananas
      nuts: peanuts
      sweets: raisins

 

YAML 문법

1. 코멘트 (주석)

  • 해시 기호(#)로 식별한다.
  • 여러 줄의 코멘트를 지원하지 않으므로 각 줄의 맨 앞에는 해시 기호(#)가 와야 한다.

 

2. 문서의 시작과 끝 (Optional)

  • 3개의 대시(—-)로 문서의 시작을 알리는데 사용한다.
  • 3개의 점(…)으로 문서의 끝을 알리는데 사용한다.

 

3. key: Value 표기

  • json 포맷과 같이 기본적으로 key와 value는 콜론(:)을 기준으로 구분한다.
  • 주의할 점은 반드시 콜론(:)뒤에 띄어쓰기를 한번 해줘야 한다.

 

4. 개행

  • json 포맷과 다르게 데이터가 있어도 콤마(,)를 쓰지 않고 바로 개행한다.

 

5. 들여쓰기(indent)

  • 파이썬과 같이 들여쓰기로 계층 구조를 표현한다.
  • 기본적으로 2칸 혹은 4칸을 지원한다.

 

6. 따옴표 표현

  • 기본적으로는 자동으로 숫자와 문자열을 인식한다.
  • 만약 값에 콜론(:)이 들어간 경우에는 무조건 따옴표로 묶어야한다.
  • url의 경우에는 따옴표 없이도 특별한 형식으로 올바르게 인식한다.
  • 큰 따옴표는 이스케이프 처리해주고, 작은 따옴표는 그대로 문자열 처리한다.

 

7. Boolean

  • yes, no ,true, false (대소문자 가리지 않는다.)

 

8. 계층

yaml 파일을 json 파일로 어떻게 변환되는지 모양을 함께 살펴보면 이해하기 쉽다.

 

 

 

배열

 

- yaml

# 1번 방식
animals:
   - 강아지
   - 고양이
   - 기린 
   
# 2번 방식
animals: [강아지, 고양이, 기린]   

 

- json

{
  "animals" : [
      "강아지",
      "고양이",
      "기린"
      ]
} 

 

배열 & 객체

 

- yaml

students:
  - name: Mark
    major: Math
    age: 20
  - name: Julie
    major: Arts
    age: 23
  - name: Tommy
    major: Music
    age: 25

 

- json

{
    "students": [
      {
        "name": "Mark",
        "major": "Math",
        "age": 20
      },
      {
        "name": "Julie",
        "major": "Arts",
        "age": 23
      },
      {
        "name": "Tommy",
        "major": "Music",
        "age": 25
      }
    ]
}

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
반응형