今回は,
JvYAML
JvYAMLはRbYAMLをJavaへ移植したものであり
JvYAMLについて
Webサイト | https:// servlets/ |
---|---|
バージョン | 0. |
ドキュメント | なし |
作者 | Ola Bini |
- 注1
- RbYAML自体はPyYAMLをRubyへ移植したものです。
インストール
https://
リスト1 JvYAMLのインストール
$ wget --no-check-certificate https://jvyaml.dev.java.net/files/documents/5215/41454/jvyaml-bin-0.2.1.tar.gz $ tar xzf jvyaml-bin-0.2.1.tar.gz $ cd jvyaml-0.2.1/ $ cp lib/jvyaml.jar $HOME
使い方
JvYAMLの基本的な使い方はリスト2のとおりです。YAMLドキュメントが
リスト2 JvYAMLの使い方
import java.util.*;
import java.io.*;
import org.jvyaml.YAML;
public class JvYAMLExample1 {
public static void main(String[] args) throws IOException {
/// YAMLドキュメントを読み込む
/// (日本語を含まないのであれば
/// Reader reader = new FileReader("example.yaml");
/// Object ydoc = YAML.load(reader);
/// でもよい)
InputStream inputStream =
args.length > 0 ? new FileInputStream(args[0]) : System.in;
Reader reader = new InputStreamReader(inputStream, "UTF-8");
reader = new BufferedReader(reader);
StringBuffer buf = new StringBuffer();
int ch;
while ((ch = reader.read()) >= 0)
buf.append((char)ch);
reader.close();
Object ydoc = YAML.load(buf.toString());
System.out.println(ydoc);
/// YAMLストリームを読み込む
reader = new FileReader("example.yaml");
List ydocs = YAML.loadAll(reader);
reader.close();
System.out.println(ydocs);
/// 任意のデータをYAML文字列に変換する
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", 101);
map.put("name", "Foo");
List<Map> list = new ArrayList<Map>();
list.add(map);
System.out.println(YAML.dump(list));
}
}
タグを変更する
JvYAMLでタグを変更する方法は不明です。
日本語の扱い
読み込み
書き出し
- 注2
- たとえ日本語が現れるのがコメントのみであってもエラーになります。
不具合
筆者が試したところ,
- YAML.
load() - 循環参照しているとエラーになる
(再帰的なエイリアスが解釈できない) - 文字列をブロックスタイルで記述したとき,
最終行の改行が取り除かれる - マッピングのデフォルト値を認識しない
- 循環参照しているとエラーになる
- YAML.
dump() - 循環参照しているデータがあるとエラーになる
- publicでないクラスのオブジェクトが復元できない
その他
もとはJRubyのために開発されたJvYAMLですが,
作者のOla Biniは,