[java] SnakeYAML을 사용하여 YAML 파일의 객체 로드하기

이번 포스트에서는 자바에서 YAML 파일을 로드하고 객체로 변환하는 방법에 대해 알아보겠습니다. 이를 위해 SnakeYAML 라이브러리를 사용할 것입니다.

SnakeYAML이란?

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 파일 로드하기

SnakeYAML을 사용하여 YAML 파일을 로드하려면 Yaml 객체를 생성하고, load 메서드를 사용하여 파일을 로드합니다.

import org.yaml.snakeyaml.Yaml;

...

Yaml yaml = new Yaml();
try (InputStream inputStream = new FileInputStream("config.yml")) {
    Object data = yaml.load(inputStream);
    // 로드한 데이터를 필요한 형식으로 캐스팅하여 사용합니다.
} catch (IOException e) {
    e.printStackTrace();
}

객체로 변환하기

로드한 YAML 데이터를 자바 객체로 변환하려면, YAML 파일의 구조에 맞게 클래스를 정의해야 합니다. 예를 들어, 다음과 같은 YAML 파일이 있다고 가정해봅시다.

person:
  name: John Doe
  age: 25

그리고 다음과 같은 자바 클래스를 정의합니다.

public class Person {
    private String name;
    private int age;
    
    // 생성자, getter, setter 등의 메서드
}

그리고 다음과 같이 YAML 데이터를 자바 객체로 변환할 수 있습니다.

import org.yaml.snakeyaml.Yaml;

...

Yaml yaml = new Yaml();
try (InputStream inputStream = new FileInputStream("config.yml")) {
    Map<String, Object> data = yaml.load(inputStream);
    Person person = new Person();
    person.setName((String) data.get("person.name"));
    person.setAge((int) data.get("person.age"));
    // 변환한 객체를 사용합니다.
} catch (IOException e) {
    e.printStackTrace();
}

위의 예시는 YAML 데이터가 person 객체에 매핑되어 있을 때의 예시입니다. YAML 파일의 구조에 따라 클래스를 정의하고 객체로 변환해야 합니다.

마무리

이번 포스트에서는 SnakeYAML 라이브러리를 사용하여 YAML 파일을 로드하고 객체로 변환하는 방법에 대해 알아보았습니다. SnakeYAML은 유연하고 간편하게 YAML 데이터를 처리하기 위한 강력한 도구입니다.

더 많은 정보를 원하시는 분들은 SnakeYAML 공식 문서를 참조하시기 바랍니다.

이상입니다. 감사합니다!