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

Java

はじめに

【Java】JacksonでJSONと遊ぶ(JSON to オブジェクト編)
JSONの操作を簡単に行うことができるライブラリであるJacksonを使って、さっとJSONからオブジェクトへの変換をするためのコード作成をしたものの共有です。

前回の記事でJSON to オブジェクトの記事を書いたので、逆にJacksonを使ってオブジェクト to 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
      • ObjectToJson.java
      • JsonData.java

前回からの変更点として、データマッピング用のクラス「JsonData.java」を分離しました。

Jacksonをつかうための準備

lib配下に格納しているjarのダウンロードが必要です。こちらは前回の記事に記載しているので、ダウンロードができていない場合(この記事から先に読んだ場合)、お手数ですが前回の記事を参照ください。

【Java】JacksonでJSONと遊ぶ(JSON to オブジェクト編)
JSONの操作を簡単に行うことができるライブラリであるJacksonを使って、さっとJSONからオブジェクトへの変換をするためのコード作成をしたものの共有です。

コード作成、実行

作ったコード

JsonData.java

JSON ⇔ オブジェクトの変換をする際に使うオブジェクトクラスです。

class JsonData {
    public String name;
    public String note;

    public JsonData() {}
    public JsonData(String name, String note) {
        this.name = name;
        this.note = note;
    }
}

名前とメモだけを持つ簡単なデータクラスです。

ObjectToJson.java

オブジェクト → JSONへの変換を確認するためのクラスです。

import com.fasterxml.jackson.databind.ObjectMapper;

public class ObjectToJson {
    public static void main(String[] args) throws Exception {
        JsonData jd = new JsonData("Sak", "Sample Json");
        ObjectMapper mapper = new ObjectMapper();

        String json = mapper.writeValueAsString(jd);
        System.out.println(json);
    }
}

ObjectMapper.writeValueAsString()を使うことで、オブジェクトからJSON形式の文字列を生成できます。

簡単な説明(ObjectToJson.java)

  • line 1:JacksonのObjectMapperを使用するためのimport文
  • line 5:JSONに変換するためのデータを生成する
  • line 8 : ObjectMapper.writeValueAsStringを使い、JsonDataクラスのデータをJSON形式の文字列に変換する
  • line 9: 読み込んだデータを表示する

コンパイル~実行結果表示まで

コンパイル

javac -cp ".;lib/*" *.java

jarの読み込み、複数のjavaファイルの指定が必要なので、ワイルドカードを使って簡単に書きましょう。

実行

java -cp ".;lib/*" ObjectToJson

クラスパスの指定を忘れずに。

実行結果

{"name":"Sak","note":"Sample Json"}

JsonDataクラスに設定されていたデータが、JSON形式の文字列で表示されました!

最後に

JSONからオブジェクトへの変換も簡単にできましたが、逆のオブジェクトからJSONへの変換も簡単にできることがわかりました。

ただ、データ量が多いオブジェクトを取り扱う時は一行で出力されても見づらいので、項目ごとの改行を入れるなどの加工は別の記事にまた書こうと思います。

コメント

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