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

이번 튜토리얼에서는 SnakeYAML 라이브러리를 사용하여 Java 프로그램에서 YAML 파일의 객체를 수정하는 방법에 대해 알아보겠습니다.

1. SnakeYAML 라이브러리 추가하기

먼저, 프로젝트의 의존성에 SnakeYAML 라이브러리를 추가해야 합니다. 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'
}

의존성을 추가한 후에는 프로젝트를 업데이트하여 라이브러리를 가져옵니다.

2. YAML 파일 읽기

SnakeYAML을 사용하여 YAML 파일을 읽으려면 다음과 같이 코드를 작성합니다.

import org.yaml.snakeyaml.Yaml;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Map;

public class YamlReader {
    public static void main(String[] args) {
        try {
            FileInputStream fileInputStream = new FileInputStream("data.yaml");
            Yaml yaml = new Yaml();
            Map<String, Object> data = yaml.load(fileInputStream);
            
            // 읽어온 객체를 수정하는 작업 수행
            
            // 수정된 객체를 파일에 저장
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 data.yaml 파일을 읽어온 뒤, YAML 형식의 데이터를 Map<String, Object> 타입으로 반환합니다.

3. 객체 수정하기

읽어온 YAML 데이터를 수정하기 위해 원하는 작업을 수행합니다. 예를 들어, data 맵에서 특정 값을 수정하려면 다음과 같이 코드를 작성할 수 있습니다.

data.put("key", "value"); // 특정 키의 값을 수정

또는, 내부 객체의 값을 수정하려면 다음과 같이 코드를 작성합니다.

Map<String, Object> internalObject = (Map<String, Object>) data.get("internalObject");
internalObject.put("key", "value"); // 내부 객체의 특정 키의 값을 수정

원하는 작업을 모두 수행한 후, 수정된 객체를 파일에 저장해야 합니다.

4. 객체 저장하기

수정된 YAML 객체를 파일에 저장하기 위해 다음과 같이 코드를 작성합니다.

import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;

public class YamlWriter {
    public static void main(String[] args) {
        try {
            FileWriter fileWriter = new FileWriter("data.yaml");
            
            DumperOptions options = new DumperOptions();
            options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
            
            Yaml yaml = new Yaml(options);
            
            yaml.dump(data, fileWriter);
            
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 data 맵을 data.yaml 파일에 저장합니다. DumperOptions를 사용하여 YAML 출력 형식을 지정할 수 있습니다.

마무리

이제 SnakeYAML을 사용하여 Java 프로그램에서 YAML 파일의 객체를 수정하는 방법에 대해 배웠습니다. SnakeYAML은 매우 강력하고 유용한 라이브러리이며, YAML 데이터를 쉽게 읽고 저장할 수 있도록 도와줍니다.

더 자세한 내용은 SnakeYAML 공식 문서를 참조하십시오.