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

YAML은 인간이 읽고 쓰기 쉬운 데이터 직렬화 형식입니다. YAML 파일은 키-값 쌍으로 구성되어 있고, 이러한 키-값은 다양한 방법으로 처리할 수 있습니다.

이번 글에서는 SnakeYAML 라이브러리를 사용하여 Java에서 YAML 파일의 키-값을 처리하는 방법에 대해 알아보겠습니다.

SnakeYAML이란?

SnakeYAML은 Java에서 YAML 데이터를 파싱하고 생성하기 위한 라이브러리입니다. SnakeYAML은 간편한 사용법과 빠른 성능으로 인기가 많습니다.

의존성 추가하기

먼저, SnakeYAML 라이브러리를 프로젝트에 추가해야 합니다. Maven 기반의 프로젝트라면 pom.xml 파일에 다음과 같이 의존성을 추가합니다.

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

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

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

YAML 파일 읽기

SnakeYAML을 사용하여 YAML 파일을 읽으려면 다음 단계를 따라야 합니다.

  1. YAML 파일 경로를 지정합니다.
  2. Yaml 객체를 생성합니다.
  3. Yaml.load() 메소드를 사용하여 YAML 파일을 로드하고, 결과를 맵 또는 리스트로 받습니다.

다음은 SnakeYAML을 사용하여 YAML 파일을 읽는 예제 코드입니다.

import org.yaml.snakeyaml.Yaml;

public class YamlReader {
    public static void main(String[] args) {
        String yamlFile = "path/to/file.yaml";
        
        Yaml yaml = new Yaml();
        try (InputStream inputStream = new FileInputStream(new File(yamlFile))) {
            Map<String, Object> data = yaml.load(inputStream);
            // 읽은 YAML 데이터에 대한 처리
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

YAML 파일의 키-값 접근하기

읽은 YAML 파일의 키-값에 접근하기 위해서는 맵 또는 리스트의 형태로 데이터가 반환됩니다. 예를 들어, 다음과 같은 YAML 파일이 있다고 가정해보겠습니다.

name: John Doe
age: 30
phone:
  home: XXX-XXXX-XXXX
  work: XXX-XXXX-XXXX

위의 YAML 파일을 읽고, 키-값에 접근하는 예제 코드는 다음과 같습니다.

Map<String, Object> data = yaml.load(inputStream);

String name = (String) data.get("name");
int age = (int) data.get("age");
Map<String, String> phone = (Map<String, String>) data.get("phone");
String homePhone = phone.get("home");
String workPhone = phone.get("work");

SnakeYAML은 자바의 타입 안전성을 고려하여 값을 반환하기 때문에 데이터를 가져올 때 타입 캐스팅을 해주어야 합니다.

정리

이번 포스트에서는 SnakeYAML을 사용하여 YAML 파일의 키-값을 처리하는 방법을 알아보았습니다. SnakeYAML은 간편한 사용법으로 YAML 데이터를 파싱하고 생성하기 위한 좋은 라이브러리입니다.

SnakeYAML 관련 자세한 정보는 SnakeYAML 공식 문서를 참고하세요.

참고 자료