[java] SnakeYAML을 사용하여 YAML 파일의 데이터 타입 처리하기

YAML은 데이터를 표현하기 위한 인간 친화적인 형식으로 널리 사용되는 포맷입니다. YAML 파일을 읽거나 쓰기 위해 Java에서 SnakeYAML 라이브러리를 사용할 수 있습니다. 이 블로그 포스트에서는 SnakeYAML을 사용하여 YAML 파일의 데이터 타입을 처리하는 방법에 대해 알아보겠습니다.

1. SnakeYAML 라이브러리 추가하기

먼저, Maven 또는 Gradle을 사용하여 프로젝트에 SnakeYAML 라이브러리를 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가하여 SnakeYAML을 가져올 수 있습니다.

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

Gradle을 사용하는 경우 build.gradle 파일에 다음 코드를 추가하면 됩니다.

implementation 'org.yaml:snakeyaml:1.27'

의존성을 추가한 후에는 SnakeYAML을 사용할 준비가 된 것입니다.

2. YAML 파일 읽기

SnakeYAML을 사용하여 YAML 파일의 데이터를 읽으려면 다음과 같은 단계를 따르면 됩니다.

2.1. YAML 파일 로드하기

import org.yaml.snakeyaml.Yaml;

Yaml yaml = new Yaml();
InputStream inputStream = new FileInputStream("data.yaml");
Object data = yaml.load(inputStream);

SnakeYAML의 Yaml 클래스를 사용하여 YAML 파일을 로드합니다. Yaml 객체는 YAML 파일과 Java 객체 간의 변환을 처리합니다.

2.2. 데이터 타입 변환하기

SnakeYAML은 YAML 파일에서 읽은 데이터를 적절한 Java 데이터 타입으로 변환합니다. 예를 들어, YAML 파일의 숫자를 자동으로 int 또는 double로 변환하고, 불리언 값을 boolean으로 변환합니다.

Map<String, Object> map = (Map<String, Object>) data;
int value1 = (int) map.get("value1");
double value2 = (double) map.get("value2");
boolean value3 = (boolean) map.get("value3");

SnakeYAML은 Map<String, Object> 형태로 데이터를 반환하므로, 이를 적절한 자바 데이터 타입으로 형변환하여 사용할 수 있습니다.

3. YAML 파일 쓰기

SnakeYAML을 사용하여 Java 객체를 YAML 파일로 쓰려면 다음 단계를 수행해야 합니다.

3.1. 데이터 객체 생성하기

import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;

public class Data {
    private String value1;
    private int value2;
    private boolean value3;

    // Getters and setters
}

Data data = new Data();
data.setValue1("Hello");
data.setValue2(123);
data.setValue3(true);

먼저, YAML 파일에 쓸 데이터를 가지고 있는 Java 객체를 생성합니다. 위의 예제에서는 Data 클래스를 사용하여 샘플 데이터 객체를 생성합니다.

3.2. YAML 파일로 변환하기

Yaml yaml = new Yaml();
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
options.setPrettyFlow(true);
yaml.setDefaultDumperOptions(options);

String output = yaml.dump(data);

SnakeYAML의 Yaml 객체를 사용하여 Java 객체를 YAML 형식의 문자열로 변환합니다. DumperOptions 객체를 사용하여 YAML 출력을 구성할 수 있습니다. 위의 예제에서는 출력을 블록 형식으로 설정하고 가독성을 높이기 위해 줄 바꿈과 들여쓰기를 추가합니다.

3.3. YAML 파일 저장하기

try (FileWriter writer = new FileWriter("output.yaml")) {
    writer.write(output);
}

변환된 YAML 문자열을 파일로 저장합니다.

결론

이 블로그 포스트에서는 SnakeYAML을 사용하여 YAML 파일의 데이터 타입을 처리하는 방법을 알아보았습니다. SnakeYAML은 강력한 라이브러리로서 YAML 파일을 읽고 쓰는 데에 매우 유용합니다. YAML 파일과 Java 객체 간의 변환을 간편하게 처리할 수 있으므로 프로젝트에서 YAML 파일을 다룰 필요가 있다면 SnakeYAML을 사용해 보는 것을 고려해보세요.

참고 자료