Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

JYaml | JYaml導入

パンくず

Java
JYaml
JYaml導入

概要

JYaml導入について

Yamlとは

YAML(ヤムル)とは、構造化データやオブジェクトを文字列に
シリアライズ(直列化)するためのデータ形式の一種。
スクリプト系言語の設定ファイルなどによく利用される。

インデントを利用した文法であるため、xmlに比べてシンプルで
人が見て理解しやすい。

JYaml

JavaYaml形式のファイルを取り扱うためのライブラリ。

JYaml設定手順

・JYaml公式サイトにアクセス
http://jyaml.sourceforge.net/download.html
・Click here to download.を押下してダウンロードサイトに移動
http://sourceforge.net/projects/jyaml/files/
・ Download jyaml-1.3.jar (59.3 kB)を押下し、ファイルをダウンロード
※仮にC:\JYamlにjyaml-1.3.jarをダウンロードします
Eclipseを起動
Yamlを利用したいプロジェクトのビルドパスのライブラリにjyaml-1.3.jarを追加

初期動作確認

ListとMapの取得処理で動作確認をします。

読み込み対象フォルダとファイル

Yaml設定ファイルの配置場所
プロジェクトルートフォルダ\conf\yaml_array.yml
プロジェクトルートフォルダ\conf\yaml_hash.yml

Yamlファイル内容

yaml_array.yml

- list1
- list2
-
  - list3_1
  - list3_2
  - list3_3

yaml_hash.yml

key1: value1
key2: value2
key3:
  key3_1: value3_1
  key3_2: value3_2

サンプルコード

package jyaml;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.ho.yaml.Yaml;

public class YamlSample {
  private final static String CONF_PATH = File.separator + "conf";
  /**
   * @param args
   */
  @SuppressWarnings("unchecked")
  public static void main(String[] args) {
    try {
      String dir = System.getProperty("user.dir");
      List<Object> array = (ArrayList<Object>) Yaml.load(new File(dir + CONF_PATH + File.separator + "yaml_array.yml"));
      System.out.println(array);
      System.out.println(array.get(2));
      List<Object> child = (ArrayList<Object>)array.get(2);
      System.out.println(child.get(2));

      Map<String, Object> hash = (HashMap<String, Object>) Yaml.load(new File(dir + CONF_PATH + File.separator + "yaml_hash.yml"));
      System.out.println(hash);
      System.out.println(hash.get("key2"));
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
  }
}

出力

[list1, list2, [list3_1, list3_2, list3_3]]
[list3_1, list3_2, list3_3]
list3_3
{key3={key3_2=value3_2, key3_1=value3_1}, key2=value2, key1=value1}
value2