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 データを書き出すプログラミングをします。
- 書き出したい情報を POJO に設定
-
ObjectMapper
インスタンスを作成 - インデントありのJSON出力を設定
- POJOを入力に writeValueAsString を呼び出して、JSON出力を文字列として取得
import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import pojo.Climate;
public class App {
public static void main(String[] args) throws IOException {
Climate climate = new Climate();
climate.setPublishingOffice("お天気庁");
climate.setReportDatetime("2021-11-15T16:36:00+09:00");
climate.setTargetArea("東京村");
climate.setHeadlineText("はれ.");
climate.setText("明日は晴れ.");
final ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
final String json = mapper.writeValueAsString(climate);
System.err.println("data: " + json);
}
}
文書情報
- 初出: 2021-11-16