JavaのライブラリjacksonでreadTreeメソッドで任意のJSON形式を読み込む方法

JavaのライブラリjacksonでreadTreeメソッドで任意のJSON形式を読み込む方法

JSON形式がどういった形式で来るかわからない場合はreadTreeメソッドでJsonNodeオブジェクトを取得します。

このJsonNodeオブジェクトで任意のJSONオブジェクトを操作することが可能になります。

getメソッドの引数にkeyを指定します。結果はvalueが返ります。

package jp.co.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class SampleJackson3 {
private static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws JsonProcessingException {
String json = "{\"key1\":{\"id\":20,\"name\":\"takahashi\"},\"key2\":[\"val1\",\"val2\"]}";
JsonNode node = mapper.readTree(json);
System.out.println(node.toString());// JSON全体を文字列として取得
System.out.println(node.get("key1").get("id"));
System.out.println(node.get("key1").get("name"));
System.out.println(node.get("key2"));
}
}

view raw
readTree
hosted with ❤ by GitHub

readTreeメソッドにはJSON形式の文字列型を渡します。JsonNodeオブジェクトが返却されるので、toString()メソッドでJSON全体を文字列として返します。

getメソッドにキーを渡せばvalueが返ります。結果は以下のようになります。

{"key1":{"id":20,"name":"takahashi"},"key2":["val1","val2"]}
20
"takahashi"
["val1","val2"]

view raw
readTree
hosted with ❤ by GitHub

JSON形式の中の配列が返ってくる場合はfor文でループすることができます。

JsonNodeにはsize()メソッドが用意されています。

package jp.co.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class SampleJackson3 {
private static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws JsonProcessingException {
String json = "{\"key1\":{\"id\":20,\"name\":\"takahashi\"},\"key2\":[\"val1\",\"val2\"]}";
JsonNode node = mapper.readTree(json);
JsonNode obj = node.get("key2");
for(int i = 0;i<obj.size();i++) {
System.out.println(obj.get(i));
}
}
}

view raw
JsonNode
hosted with ❤ by GitHub

結果は以下の配列を順次処理できていることがわかります。

"val1"
"val2"

view raw
JsonNode
hosted with ❤ by GitHub

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA