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
