[java] SnakeYAML을 사용하여 YAML 파일의 기본값 처리하기

YAML은 인기 있는 데이터 직렬화 형식입니다. YAML 파일은 데이터를 사람이 읽기 쉬운 형식으로 저장할 수 있으며, 다양한 프로그래밍 언어에서 사용할 수 있습니다. 이 글에서는 Java에서 YAML 파일을 다루고 기본값 처리를 위해 SnakeYAML 라이브러리를 사용하는 방법에 대해 알아보겠습니다.

SnakeYAML 이란?

SnakeYAML은 Java용 YAML 처리 라이브러리입니다. SnakeYAML은 YAML 파일의 파싱, 생성, 수정을 쉽게 할 수 있는 기능을 제공합니다. YAML 파일을 읽어 객체로 매핑하거나, 객체를 YAML 파일로 변환하는 작업을 할 수 있습니다.

SnakeYAML 설치하기

SnakeYAML을 사용하기 위해서는 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.27</version>
</dependency>

Gradle을 사용하는 경우 build.gradle 파일에 다음 의존성을 추가합니다:

implementation 'org.yaml:snakeyaml:1.27'

의존성을 추가한 후에는 해당 라이브러리를 사용하여 YAML 파일을 다룰 수 있게 됩니다.

YAML 파일의 기본값 처리하기

YAML 파일에서 값이 없거나 올바르지 않은 경우, 기본값을 사용하고 싶을 수 있습니다. 예를 들어, YAML 파일에서 읽은 데이터를 객체로 매핑할 때, 값이 없는 경우 기본값을 사용하고 싶을 수 있습니다.

SnakeYAML을 사용하여 YAML 파일을 읽을 때, 매핑된 객체에서 기본값을 지정하려면 해당 객체에 디폴트 값을 가진 필드를 추가하면 됩니다. SnakeYAML은 해당 필드를 읽을 때 값이 없으면 디폴트 값을 사용합니다.

public class Config {
    private String name = "Default Name";
    private int age = 0;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

위의 예시에서는 nameage 필드에 디폴트 값으로 “Default Name”과 0을 지정했습니다. YAML 파일을 읽을 때, 해당 필드에 값이 없는 경우 기본값으로 설정됩니다.

YAML 파일:

name: John Doe

Java 코드:

Yaml yaml = new Yaml(new Constructor(Config.class));
try (InputStream inputStream = new FileInputStream("config.yaml")) {
    Config config = yaml.load(inputStream);
    System.out.println("Name: " + config.getName());
    System.out.println("Age: " + config.getAge());
} catch (IOException e) {
    e.printStackTrace();
}

위의 코드에서 config.yaml은 YAML 파일의 경로입니다. Config 클래스의 name 필드에는 YAML 파일의 값을 읽어옵니다. 하지만 age 필드는 YAML 파일에서 값을 찾을 수 없으므로 디폴트 값인 0이 사용됩니다.

이렇게 SnakeYAML을 사용하여 YAML 파일의 기본값 처리를 할 수 있습니다.

마무리

이번 글에서는 SnakeYAML을 사용하여 YAML 파일의 기본값 처리 방법에 대해 알아보았습니다. SnakeYAML을 사용하면 YAML 파일을 다루는 작업을 간단하게 할 수 있으며, 기본값 처리를 통해 YAML 파일에서 값이 없는 경우 기본값을 사용할 수 있습니다. SnakeYAML은 Java에서 YAML을 처리할 때 유용한 도구입니다.

참고 자료