[java] SnakeYAML을 사용하여 YAML 파일의 프리티 프린트 처리하기

이번에는 자바에서 YAML 파일을 사용할 때, SnakeYAML 라이브러리를 사용하여 YAML 파일을 프리티 프린트하는 방법에 대해 알아보겠습니다.

SnakeYAML이란?

SnakeYAML은 자바에서 YAML을 파싱하고 생성하기 위한 라이브러리입니다. YAML은 사람과 기계 모두 이해하기 쉽도록 설계된 데이터 직렬화 형식으로, 설정 파일이나 데이터 전송에 많이 사용됩니다.

SnakeYAML 설치

먼저, SnakeYAML을 사용하기 위해 Maven 또는 Gradle 등의 의존성 관리 도구를 통해 라이브러리를 추가해야 합니다. Maven의 경우 pom.xml 파일에 다음 의존성을 추가합니다:

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

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

dependencies {
    implementation 'org.yaml:snakeyaml:1.27'
}

의존성을 추가한 후에는 라이브러리를 사용할 준비가 완료됩니다.

YAML 파일 프리티 프린트하기

이제 SnakeYAML을 사용하여 YAML 파일을 프리티 프린트하는 방법을 알아보겠습니다. 다음은 예제 YAML 파일의 내용입니다:

# example.yaml
fruits:
  - apple
  - banana
  - orange

SnakeYAML을 사용하여 이 YAML 파일을 프리티 프린트하는 방법은 다음과 같습니다:

import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

public class PrettyPrintYamlFile {
    public static void main(String[] args) {
        String filePath = "example.yaml";
        
        try (InputStream inputStream = new FileInputStream(filePath)) {
            // YAML 파일 로드
            Yaml yaml = new Yaml();
            Object obj = yaml.load(inputStream);
            
            // DumperOptions 설정 (프리티 프린트를 위한 설정)
            DumperOptions options = new DumperOptions();
            options.setPrettyFlow(true);
            
            // YAML 파일 프리티 프린트
            String renderedYaml = yaml.dump(obj);
            FileWriter writer = new FileWriter(filePath);
            writer.write(renderedYaml);
            writer.close();
            
            System.out.println("YAML 파일이 프리티 프린트되었습니다.");
        } catch (IOException e) {
            System.out.println("YAML 파일을 불러오거나 저장하는 도중 에러가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

위의 코드에서는 example.yaml 파일을 로드하고, DumperOptions를 사용하여 프리티 프린트 설정을 구성한 다음, YAML 파일을 프리티 프린트하여 덮어씁니다. 마지막으로 “YAML 파일이 프리티 프린트되었습니다.”라는 메시지를 출력합니다.

위의 코드를 실행하면 예제 YAML 파일이 프리티 프린트되어 저장됩니다.

마무리

SnakeYAML을 사용하여 YAML 파일을 프리티 프린트하는 방법에 대해 알아보았습니다. 이를 통해 YAML 파일을 읽고 쓸 때 가독성을 향상시킬 수 있습니다. SnakeYAML의 다른 기능에 대해서도 공식 문서나 예제 코드를 참고해보시면 더욱 다양한 활용이 가능할 것입니다.

참고: SnakeYAML 공식 GitHub 페이지