JSON をちょっと Java で読み込みたい時のサンプルをメモしておきます。
JSON読み書きには RFC 4180 を実装する必要がありますが、一般的にはライブラリ利用により実現します。
この例では、 jackson-databind
を利用した JSON読み込みサンプル記述を残しておきます。
Maven (pom.xml)
まず最初に、JSON読み込みを実現するためのライブラリである jackson-databind
をビルドに組み込みます。 pom.xml ファイルの に以下の Maven Repository 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
POJO 作成
jackson-databind
はデータの読み込みに Java の POJO クラスを利用します。この POJO クラスは一般的にはツールを用いて自動生成します。ここでは、jsonschema2pojo
を利用して、JSON文字列を入力に Java ソースコードを自動生成します。
jsonschema2pojo
サイトは以下のような画面のイメージです。
生成ソースコードの設定例
- JSON文字列を貼り付け
-
Package
に生成後 Javaソースコードのパッケージ名を入力。この例ではpojo
と入力 -
Class name
に生成後 Javaソースコードのクラス名を入力。この例ではClimate
と入力 -
Source type
をJSON
に設定 -
Annotation style
をJackson 2.x
に設定 - チェックボックスは、
Include getters and setters
のみチェック
Zip
をクリックして、そして Java ソースファイルを ZIP ファイルとしてダウンロードします。
Java 記述
生成した POJO (Climate.java
) を利用して JSON データを読み込むプログラミングをします。
-
ObjectMapper
インスタンスを作成して、JSON文字列を入力に readValue を呼び出して、値が設定済みの Climate インスタンスを出力として取得します。
import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;
import pojo.Climate;
public class App {
public static void main(String[] args) throws IOException{
final String content = "{\"publishingOffice\":\"気象庁\",\"reportDatetime\":\"2021-11-15...高いでしょう。\"}";
final ObjectMapper mapper = new ObjectMapper();
final Climate data = mapper.readValue(content, Climate.class);
System.out.println("data: " + data.getPublishingOffice());
}
}
文書情報
- 初出: 2021-11-16