[java] SnakeYAML을 사용하여 YAML 파일의 코드 분석하기

YAML은 인간이 쉽게 읽고 쓸 수 있는 데이터 직렬화 양식입니다. 많은 프로그래밍 언어에서 YAML을 처리하고 코드에 사용하기 위해 라이브러리가 제공됩니다. Java에서는 SnakeYAML이라는 라이브러리를 사용하여 YAML 파일의 코드를 분석할 수 있습니다.

이 블로그 포스트에서는 SnakeYAML을 사용하여 YAML 파일을 파싱하고 Java 코드에서 사용할 수 있는 객체로 변환하는 방법을 알아보겠습니다.

SnakeYAML 라이브러리 추가하기

먼저, 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'
}

YAML 파일 파싱하기

SnakeYAML을 사용하여 YAML 파일을 파싱하려면 다음 단계를 따릅니다:

  1. YAML 파일을 InputStream으로 읽어옵니다.
  2. Yaml 객체를 생성합니다.
  3. Yaml 객체의 load() 메소드를 사용하여 YAML 파일을 파싱하고 Java 객체로 변환합니다.

다음은 예시 YAML 파일의 내용입니다:

person:
    name: John Doe
    age: 30
    address:
        street: 123 Main St
        city: Anytown
        country: USA

다음은 위 YAML 파일을 파싱하여 Java 객체로 변환하는 예시 코드입니다:

import org.yaml.snakeyaml.Yaml;

import java.io.InputStream;
import java.util.Map;

public class YamlParser {
    public static void main(String[] args) {
        // 1. YAML 파일을 InputStream으로 읽어온다.
        InputStream inputStream = YamlParser.class.getResourceAsStream("/example.yaml");

        // 2. Yaml 객체를 생성한다.
        Yaml yaml = new Yaml();

        // 3. YAML 파일을 파싱하여 Java 객체로 변환한다.
        Map<String, Object> yamlObject = yaml.load(inputStream);

        System.out.println(yamlObject);
    }
}

이 코드를 실행하면 다음 결과가 출력됩니다:

{person={name=John Doe, age=30, address={street=123 Main St, city=Anytown, country=USA}}}

결과 사용하기

파싱된 YAML 파일은 Map과 같은 자바 객체로 반환됩니다. 따라서 결과를 사용하기 위해서는 일반적인 자바 객체 접근 방식을 사용할 수 있습니다. 예를 들어, 위의 예시에서 “name” 속성에 접근하려면 다음과 같이 코드를 작성할 수 있습니다:

String name = (String) yamlObject.get("person").get("name");
System.out.println("Name: " + name);

이 코드를 실행하면 다음과 같은 결과가 출력됩니다:

Name: John Doe

결론

이제 SnakeYAML을 사용하여 YAML 파일의 코드를 분석하는 방법을 알게 되었습니다. SnakeYAML은 Java에서 YAML 파일을 파싱하고 객체로 변환하는 작업을 간편하게 해주는 강력한 도구입니다. YAML 파일에서 필요한 데이터를 추출하기 위해 SnakeYAML을 사용하여 프로그램을 개발해보세요.

참고 자료