はじめに
JSONの操作を簡単に行うことができるライブラリであるJacksonを使って、さっとJSONからオブジェクトへの変換をするためのコード作成をしたものの共有です。
開発環境
- Windows10
- Java11
ディレクトリ構成
- JavaWorkspace
- Jackson
- lib
- jackson-annotations-2.13.4-sources.jar
- jackson-core-2.13.4-sources.jar
- jackson-databind-2.13.4-sources.jar
- JacksonSample.java
- lib
- Jackson
jackson-*.jarファイルの取得については次の項に記載します。
Jacksonをつかうための準備
「はじめに」に書いた通り、とりあえず動かしたいだけの環境を作りたいので、mavenを使わずjarをダウンロードして手元のディレクトリに格納しています。
今回は見出しのjarを以下のリンクからそれぞれダウンロードしました。
jackson-annotations-2.13.4-sources.jar
Central Repository: com/fasterxml/jackson/core/jackson-annotations/2.13.4
jackson-core-2.13.4-sources.jar
Central Repository: com/fasterxml/jackson/core/jackson-core/2.13.4
jackson-databind-2.13.4-sources.jar
Central Repository: com/fasterxml/jackson/core/jackson-databind/2.13.4
これらをダウンロード後、「JavaWorkspace/Jackson/lib」ディレクトリに格納して、準備完了です。
コード作成、実行
作ったコード
JacksonSample.java
JSON文字列 → オブジェクトへの変換を確認するためのクラスです。
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonSample {
static String TEST_JSON = "{\"name\":\"Sak\", \"note\":\"Sample Json\"}";
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
JsonData jd = mapper.readValue(TEST_JSON, JsonData.class);
System.out.println("name:" + jd.name + ", note:" + jd.note);
}
}
class JsonData {
public String name;
public String note;
}
ObjectMapper.readValue()を使うことで、JSON形式の文字列をオブジェクトに設定できます。
簡単なコメント
- line 1:JacksonのObjectMapperを使用するためのimport文
- line 5:解析対象のJSON文字列
- line 9 : ObjectMapper.readValueを使い、JSON形式の文字列をマッピング用クラス(この場合、JsonDataクラス)に読み込む
- line 11: 読み込んだデータを表示する
- line 15~18: JSONを読み込むためのマッピング用クラス
フラットなJSONかつ項目数も少ないので、この程度の行数でさっとコーディングが完了しました。
コンパイル~実行結果表示まで
コンパイルおよびプログラム実行はPowerShell上で実施しています。なお、同様のコマンドをコマンドプロンプトで入力しても実行できることは確認しています。
コンパイル
PS C:\JavaWorkspace\Jackson> javac -cp ".;lib/*" JacksonSample.java
jarを読み込む必要があるので、クラスパス指定は忘れずに。
実行
PS C:\JavaWorkspace\Jackson> java -cp ".;lib/*" JacksonSample
実行時もクラスパス指定を忘れずに。
実行結果
name: Sak, note: Sample Json
ちゃんとJSONからオブジェクトにデータが設定されました!
最後に
色々とJSONを解析するライブラリはあるんですが、一番身近に触ることが多いものだったので学習を兼ねて環境設定からやってみました。意外とさっと作れて確認ができたのは良かったです。
今回いくつかjarをダウンロードしてきたけれど、この記事書くだけならannotationsは無くても大丈夫だったな…
コメント