JavaでJacksonを使用してJSONファイル内の値を検索・取得する方法
ObjectNodeクラスとは
com.fasterxml.jackson.databind.node.ObjectNodeクラスは、JSONコンテンツ内のJSONオブジェクト構造をマッピングするために使用できるクラスです。JSONファイル内の特定の値を検索するには、ObjectNodeクラスのget()メソッドを使用します。このメソッドは、オブジェクトノード内の指定されたフィールドの値にアクセスするためのもので、フィールド名を引数として渡すことで対応する値をJsonNodeとして取得できます。
また、指定したフィールドが存在するかどうかを事前に確認したい場合は、has()メソッドが便利です。フィールド名がノード内に存在すればtrueを返すため、存在チェックと値の取得を組み合わせた安全なコードを書くことができます。
構文
public JsonNode get(String fieldName)
使用例
以下の例では、JSON形式の文字列をObjectMapperを使ってObjectNodeに読み込み、「name」フィールドが存在するかどうかをhas()メソッドで確認した上で、get()メソッドによってその値を取得して表示しています。
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class ObjectNodeTest {
public static void main(String args[]) throws Exception {
String jsonString = "{\"Id\":101, \"name\":\"Raja Ramesh\", \"address\":\"Madhapur\"}";
ObjectMapper mapper = new ObjectMapper();
ObjectNode node = mapper.readValue(jsonString, ObjectNode.class);
if(node.has("name")) {
System.out.println("NAME: " + node.get("name"));
}
}
}実行結果
NAME: "Raja Ramesh"
押さえておきたいポイント
- nullの返却: get()メソッドは、指定したフィールドが存在しない場合にnullを返します。NullPointerExceptionを防ぐためにも、事前にhas()メソッドで存在確認を行うのが安全です。
- 文字列として取得: 引用符を含まない純粋なテキストが必要な場合は、node.get("name").asText()のようにasText()メソッドを使用すると便利です。
- 型変換: 数値として扱いたい場合はasInt()やasDouble()、真偽値ならasBoolean()など、目的に応じた変換メソッドが用意されています。
このように、JacksonのObjectNodeクラスを活用することで、JSONデータの構造を柔軟に操作しながら、必要な値を簡単かつ安全に検索・取得することができます。
-
【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)
JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず
-
JavaでJSONファイルを作成する方法をわかりやすく解説
JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed