2014年8月2日土曜日

Jsonで書き込みと読み出し

Yahoo競馬から取得したデータをjson形式でファイルに保存することにした。jsonのライブラリとして、jacksonを使った。Annotations, Streaming API, DataBindのライブラリを追加した。
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.FIELD, Visibility.ANY)
.setVisibility(PropertyAccessor.CREATOR, Visibility.NONE)
.setVisibility(PropertyAccessor.SETTER, Visibility.NONE)
.setVisibility(PropertyAccessor.GETTER, Visibility.NONE)
.setVisibility(PropertyAccessor.IS_GETTER, Visibility.NONE);
om.writeValue(file, list);
writeValueを使うとオブジェクトの属性値がそのまま書き出される。加えて、たとえば、getXXXX的な名前の関数の値も書き出されてしまう。そのため、setVisibilityを使って、それらを書き出さないように変更した。
一方で読み込みをしようとしても、うまくオブジェクトに読み込むことができなかった。仕方ないので、
JsonNode rootNode;
rootNode = om.readTree(new File(filename));
for (JsonNode node: rootNode) {
Race race = new Race();
race.date = new Date(node.get("date").longValue());
のような形で、リストを繰り返しながら読み込んだ。

0 件のコメント:

コメントを投稿