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

이번 포스트에서는 Java에서 SnakeYAML 라이브러리를 사용하여 YAML 파일의 객체를 쿼리하는 방법에 대해 알아보겠습니다.

1. SnakeYAML 라이브러리 시작하기

SnakeYAML은 Java에서 YAML 파일을 파싱하고 생성하기 위한 라이브러리입니다. Maven이나 Gradle과 같은 빌드 도구를 사용하여 프로젝트에 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'
}

2. YAML 파일 읽기

SnakeYAML을 사용하여 YAML 파일을 읽기 위해서는 Yaml 객체를 생성하고 load 메소드를 사용해야 합니다. 다음은 YAML 파일을 읽는 예제입니다:

import org.yaml.snakeyaml.Yaml;

public class YamlReader {
    public static void main(String[] args) {
        Yaml yaml = new Yaml();
        
        try (InputStream inputStream = new FileInputStream("example.yaml")) {
            // YAML 파일의 내용을 객체로 로드
            Object data = yaml.load(inputStream);
            
            // 로드한 데이터를 출력하거나 원하는 작업을 수행
            System.out.println(data);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

example.yaml 파일이 존재하고 그 내용을 로드한 후 출력하는 간단한 예제입니다.

3. 객체 쿼리하기

SnakeYAML을 사용하여 YAML 파일을 읽었다면, 로드한 데이터의 필드나 속성에 접근하여 쿼리할 수 있습니다. 예를 들어, 다음 YAML 파일을 가정해봅시다:

people:
  - name: Alice
    age: 28
  - name: Bob
    age: 32

SnakeYAML을 사용하여 이 YAML 파일을 읽고 사람들의 이름을 출력하는 예제를 작성해보겠습니다:

import org.yaml.snakeyaml.Yaml;

import java.util.List;
import java.util.Map;

public class YamlQuery {
    public static void main(String[] args) {
        Yaml yaml = new Yaml();

        try (InputStream inputStream = new FileInputStream("example.yaml")) {
            // YAML 파일의 내용을 객체로 로드
            Map<String, List<Map<String, Object>>> data = yaml.load(inputStream);

            // 'people' 필드의 값을 가져와서 출력
            List<Map<String, Object>> people = data.get("people");
            for (Map<String, Object> person : people) {
                String name = (String) person.get("name");
                System.out.println("Name: " + name);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 예제에서는 people 필드의 값을 가져와서 name 필드의 값을 출력하고 있습니다.

마무리

이번 포스트에서는 Java에서 SnakeYAML 라이브러리를 사용하여 YAML 파일의 객체를 쿼리하는 방법을 알아보았습니다. YAML 파일을 파싱하는 작업이 필요한 경우에 SnakeYAML은 유용한 도구가 될 수 있습니다.

추가적인 정보나 문서는 SnakeYAML의 공식 웹사이트를 참고하시기 바랍니다.

Happy coding!