前提・実現したいこと
jacksonを使用して以下のjsonファイル(レコード3件)を読み込んで、値を取得したいです。
https://teratail.com/questions/64502
こちらを参考にして1件目の「yamada」はデータ取得できたのですが、2件目以降の「tanaka」「suzuki」を取得する方法が分かりません。
2件目、3件目のレコードを取得するにはどうしたらいいでしょうか?
よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
sample.json {"name":"yamada","age":"25","hobby":["run","swim"]} {"name":"tanaka","age":"28","hobby":["movie","music","reading"]} {"name":"suzuki","age":"31","hobby":["cooking","travel","gym","gardening"]} //コード public static void main(String[] args) { ObjectMapper mapper = new ObjectMapper(); try { String jsonText = "C:\\sample.json"; JsonNode node = mapper.readTree(new File(jsonText)); printNode(node, "root"); } catch (IOException e) { e.printStackTrace(); } } static void printNode(JsonNode node, String path) { if (node.isObject()) { // Object {} ノードを表示します。 Iterator<String> iter = node.fieldNames(); while (iter.hasNext()) { String name = (String)iter.next(); printNode(node.get(name), path + "." + name); } /* 名前とノードがペアになった反復子を使用することもできます。 Iterator<Map.Entry<String, JsonNode>> iter2 = node.fields(); while (iter2.hasNext()) { Map.Entry<String, JsonNode> entry = (Map.Entry<String, JsonNode>)iter2.next(); printNode(entry.getValue(), path + "." + entry.getKey()); } */ } else if(node.isArray()) { // Array [] ノードを表示します。 Iterator<JsonNode> iter = node.elements(); int index = 0; while (iter.hasNext()) { printNode((JsonNode)iter.next(), path + String.format("[%s]", index++)); } // どちらでもない場合に値を表示 } else { // Value を表示する。 System.out.println(String.format("%s: %s", path, node)); } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/08/30 09:49