[java] SnakeYAML을 사용한 YAML 파일의 중첩 구조 쓰기

YAML(Yet Another Markup Language)은 사람이 쉽게 읽고 쓸 수 있는 데이터 직렬화 양식입니다. 자바에서는 SnakeYAML 라이브러리를 사용하여 YAML 파일을 처리할 수 있습니다. 이번 포스트에서는 SnakeYAML을 사용하여 중첩된 YAML 파일의 구조를 작성하는 방법에 대해 알아보겠습니다.

Maven 종속성 추가

먼저, SnakeYAML 라이브러리를 사용하기 위해 Maven 프로젝트의 종속성에 다음 내용을 추가해야 합니다.

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

중첩된 YAML 구조 작성하기

YAML 파일의 중첩된 구조를 작성하려면 Map과 List를 사용해야 합니다. 예를 들어, 다음과 같은 중첩된 YAML 구조를 작성해보겠습니다.

# Sample YAML with nested structure
employees:
  - name: John
    age: 25
    skills:
      - Java
      - Python
  - name: Jane
    age: 30
    skills:
      - C++
      - Javascript

위의 YAML은 employees라는 키를 갖는 Map을 가지고 있으며, 각각의 직원은 name, age, skills로 구성된 Map입니다. 직원들은 List에 담겨 있고, 각각의 List 요소는 다시 Map으로 구성됩니다.

Java 코드 작성하기

SnakeYAML을 사용하여 위의 YAML 구조를 작성하는 방법은 다음과 같습니다.

import org.yaml.snakeyaml.Yaml;

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class YAMLWriter {

    public static void main(String[] args) {
        // Create a map for employees
        Map<String, Object> employees = new HashMap<>();

        // Create the first employee
        Map<String, Object> john = new HashMap<>();
        john.put("name", "John");
        john.put("age", 25);
        List<String> johnSkills = new ArrayList<>();
        johnSkills.add("Java");
        johnSkills.add("Python");
        john.put("skills", johnSkills);

        // Create the second employee
        Map<String, Object> jane = new HashMap<>();
        jane.put("name", "Jane");
        jane.put("age", 30);
        List<String> janeSkills = new ArrayList<>();
        janeSkills.add("C++");
        janeSkills.add("Javascript");
        jane.put("skills", janeSkills);

        // Add employees to the map
        List<Map<String, Object>> employeeList = new ArrayList<>();
        employeeList.add(john);
        employeeList.add(jane);
        employees.put("employees", employeeList);

        // Write the YAML file
        Yaml yaml = new Yaml();
        try (FileWriter writer = new FileWriter("employees.yaml")) {
            yaml.dump(employees, writer);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 먼저 employees라는 키를 갖는 Map을 생성하고, 각각의 직원을 위한 Map과 List를 생성합니다. 그런 다음, employees에 직원들의 Map을 List에 담아 추가합니다. 마지막으로, SnakeYAML을 사용하여 Map 구조를 YAML 파일에 쓰도록 합니다.

실행 결과 확인

위의 코드를 실행하면, 현재 디렉토리에 “employees.yaml” 파일이 생성되고, 아래와 같은 내용이 저장됩니다.

employees:
- name: John
  age: 25
  skills:
  - Java
  - Python
- name: Jane
  age: 30
  skills:
  - C++
  - Javascript

결론

이렇게 SnakeYAML을 사용하여 중첩된 YAML 구조를 작성하는 방법에 대해 알아보았습니다. YAML 파일은 데이터 직렬화의 유연하고 가독성이 좋은 형식을 제공하여 많은 데이터 처리 애플리케이션에서 널리 사용됩니다. SnakeYAML을 사용하면 자바에서도 YAML 파일을 쉽게 다룰 수 있습니다.