YAML は一般的に使用されるデータシリアル化形式であり、Java アプリケーションでの YAML データの読み取りと書き込みは一般的なタスクです。この記事では、SnakeYAML、Jackson Dataformat YAML、YAMLBeans という 3 つの人気のある Java ツールキットについて説明します。これらはすべて、YAML データの読み取りと書き込みのための機能を提供します。この記事では、これらのツールキットの特徴やMavenの依存関係の設定、使用例などを一つ一つ紹介していきます。最後に、この記事では、プロジェクトのニーズに適したツールキットを選択できるように、それぞれの長所と短所をまとめています。
ツールキットの紹介
1.スネークYAML
- SnakeYAML は、YAML データの読み取りと書き込みのための強力で人気のある Java ライブラリです。
- YAML データを Java オブジェクトに変換したり、Java オブジェクトを YAML データに変換したりできる、シンプルで柔軟な API を提供します。
- 公式ウェブサイト:https://bitbucket.org/asomov/snakeyaml
- Maven の依存関係
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.28</version>
</dependency>
2. ジャクソンデータフォーマット YAML
- Jackson Dataformat YAML は、YAML 形式のサポートを提供する Jackson ライブラリの拡張機能です。
- 同じ API を使用して JSON と YAML データを処理できるようにします。
- 公式ウェブサイト: https://github.com/FasterXML/jackson-dataformat-yaml
- Maven の依存関係
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.12.5</version>
</dependency>
3. YAMLBean
- YAMLBeans は、YAML データを読み書きするための軽量の Java ライブラリです。
- YAML データを Java オブジェクトにマップし、Java オブジェクトを YAML データに変換するための単純な API を提供します。
- 公式サイト:https://github.com/EsotericSoftware/yamlbeans
- Maven の依存関係
<dependency>
<groupId>net.sourceforge.yamlbeans</groupId>
<artifactId>yamlbeans</artifactId>
<version>1.14</version>
</dependency>
使用例
SnakeYAML の例
// 读取 YAML 文件
try (InputStream inputStream = new FileInputStream("example.yaml")) {
Yaml yaml = new Yaml();
Map<String, Object> data = yaml.load(inputStream);
// 处理 YAML 数据
System.out.println(data);
} catch (IOException e) {
e.printStackTrace();
}
// 写入 YAML 文件
try (Writer writer = new FileWriter("output.yaml")) {
Yaml yaml = new Yaml();
Map<String, Object> data = createData();
yaml.dump(data, writer);
} catch (IOException e) {
e.printStackTrace();
}
private static Map<String, Object> createData() {
// 创建要写入的数据
// ...
return data;
}
Jackson データフォーマット YAML の例
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
// 读取 YAML 文件
try {
Map<String, Object> data = mapper.readValue(new File("example.yaml"), Map.class);
// 处理 YAML 数据
System.out.println(data);
} catch (IOException e) {
e.printStackTrace();
}
// 写入 YAML 文件
try {
Map<String, Object> data = createData();
mapper.writeValue(new File("output.yaml"), data);
} catch (IOException e) {
e.printStackTrace();
}
YAMLBean の例
// 读取 YAML 文件
try (YamlReader reader = new YamlReader(new FileReader("example.yaml"))) {
Object data = reader.read();
// 处理 YAML 数据
System.out.println(data);
} catch (IOException e) {
e.printStackTrace();
}
// 写入 YAML 文件
try (YamlWriter writer = new YamlWriter(new FileWriter("output.yaml"))) {
Map<String, Object> data = createData();
writer.write(data);
} catch (IOException e) {
e.printStackTrace();
}
ツールキットの長所と短所のまとめ
スネークYAML
- 長所: 強力で柔軟な API で、広く使用されています。
- 短所: 比較的複雑なので、より詳細な処理が必要です。
ジャクソン データ形式 YAML
- 長所: JSON 処理ライブラリと同じ API が広く使用されており、Jackson エコシステムと統合されています。
- 短所: 比較的複雑で、Jackson ライブラリに基づいて構成して使用する必要があります。
YAMLBeans
- 長所:軽くて使いやすい。
- 短所: 関数が比較的少ないため、単純な YAML データ処理に適しています。
要約する
3 つのライブラリにはそれぞれ長所と短所があり、プロジェクトのニーズと好みに応じて、適切なツールキットを選択できます。
より高い柔軟性と機能が必要な場合は、SnakeYAML または Jackson Dataformat YAML を選択できます。
ニーズが比較的単純な場合は、YAMLBeans がより軽量な選択肢になる可能性があります。
どのツールキットを選択しても、上記のサンプル コードを開始点として使用して、特定のニーズに合わせてカスタマイズおよび拡張できます。