【Java】JacksonでJSONと遊ぶ(JSON to オブジェクト編)

Java

はじめに

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

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は無くても大丈夫だったな…

コメント

タイトルとURLをコピーしました