【Java】yml ( ヤムル ) ファイルを読み込んだ情報をオブジェクトクラスに格納する

6月 8, 2023

ライブラリはSnakeYAMLを使用していきます。

【Java】yml ( ヤムル ) ファイルを読み込んだ情報をオブジェクトクラスに格納

今回使用した環境

インターネット接続可能のオンラインの環境

64 ビット オペレーティング システム

Windows 10 22H2

JAVA 17

SnakeYAML 1.33

ソースコード

Mavenを使用しているのでまずはpom.xmlです。

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

読み込みするymlファイルはこんな感じです。ymlファイルの文字コードはutf-8としています。

※文字コードをSJISにするとコメントの日本語表記が悪さをして読み込み時にYAMLExceptionの例外発生となります。

# 料理ID
id: 0001
# 料理名
name: Curry Rice
# 食べた日
lastDate: 1603-03-24
# 料理を食べる人たち
people:
  - "Nobunaga"
  - "Hideyoshi"
  - "Ieyasu"
# 材料
materials:
  "potatoes": 3
  "carrot": 1
  "onion": 2

次にmainメソッドです。ymlファイルを読み込み、コンソールに出力しているだけです。

import org.yaml.snakeyaml.Yaml;

public class YamlTest {

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

		// ymlファイル読み込み
		Recipe recipe = yaml.loadAs(ClassLoader.getSystemResourceAsStream("recipe.yml"),
                                    Recipe.class);
		// 読み込んだ内容の出力
		System.out.println(recipe.getId());
		System.out.println(recipe.getName());
		System.out.println(recipe.getLastDate());
		for (String man : recipe.getPeople()) {
			System.out.println(man);
		}
		for (String key : recipe.getMaterials().keySet()) {
			System.out.println(recipe.getMaterials().get(key));
		}
	}
}

次はymlを読み込んだ内容を格納するRecipeクラスです。

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

public class Recipe {
	
	private String id;
	private String name;
	private Date lastDate;
	private List<String> people;
	private Map<String, Object> materials;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getLastDate() {
		return lastDate;
	}
	public void setLastDate(Date lastDate) {
		this.lastDate = lastDate;
	}
	public List<String> getPeople() {
		return people;
	}
	public void setPeople(List<String> people) {
		this.people = people;
	}
	public Map<String, Object> getMaterials() {
		return materials;
	}
	public void setMaterials(Map<String, Object> materials) {
		this.materials = materials;
	}
}

動作確認

最後に動作確認です。ymlファイルがオブジェクトクラスに格納され、読み取れていることが確認できます。

以上となります。

ここまでお読みいただきありがとうございました。

Java

Posted by だゆう