Java
 Computer >> コンピューター >  >> プログラミング >> Java

JacksonライブラリでJSONを見やすく整形する方法(Java Pretty Print入門)

Jackson APIは、JavaオブジェクトをJSONに変換したり、その逆にJSONをJavaオブジェクトへ変換したりできる、Javaベースの人気ライブラリです。他のAPIと比較して処理速度が速く、メモリ消費も少ないため、大きなオブジェクトを扱う場合にも適しています。Jacksonでは、Streaming APITree ModelData Bindingの3つの方式でJSONを処理できます。

JSONを読みやすい形式で出力する(Pretty Print)には、ObjectMapperクラスのwriterWithDefaultPrettyPrinter()メソッドを使用します。このファクトリメソッドは、デフォルトのプリティプリンターによるインデント付きでオブジェクトをシリアライズするObjectWriterを構築します。

構文

public ObjectWriter writerWithDefaultPrettyPrinter()

使用例

以下のサンプルコードでは、1行のJSON文字列をインデント付きの整形された形式に変換して出力しています。

import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class PrettyPrintJsonJacksonTest {
    public static void main(String[] args) throws IOException {
        String data = "{\"Age\":30,\"Technologies\":[\"Java\",\"Spark\",\"Python\"],\"Name\":\"Adithya\"}";

        ObjectMapper mapper = new ObjectMapper();
        Object json = mapper.readValue(data, Object.class);

        // Pretty print JSON
        String jsonStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json);
        System.out.println(jsonStr);
    }
}

実行結果

{
  "Age" : 30,
  "Technologies" : [ "Java", "Spark", "Python" ],
  "Name" : "Adithya"
}

このように、writerWithDefaultPrettyPrinter()を使うことで、わずか数行のコードでJSONを人間が読みやすい整形済みフォーマットに変換できます。ログ出力やデバッグ時に特に便利なテクニックなので、ぜひ活用してみてください。

  1. JavaのGsonライブラリでMapをJSONに変換する方法をわかりやすく解説

    Gsonは、JavaオブジェクトをJSONに変換(シリアライズ)したり、その逆にJSONからJavaオブジェクトへ変換(デシリアライズ)したりできるGoogle製のオープンソースライブラリです。JSON文字列を同等のJavaオブジェクトにマッピングすることも可能です。これらの変換を行うには、Javaプログラムにcom.google.gsonパッケージをインポートする必要があります。 Gsonインスタンスの生成方法 Gsonのインスタンスは、主に以下の2つの方法で作成できます。 new Gson() を使って直接インスタンス化する GsonBuilder のインスタンスを作成し、create(

  2. JavaのGsonライブラリでJSONオブジェクトをJavaオブジェクトに変換する方法

    Gsonは、Googleが開発したJava向けのJSONライブラリです。Gsonを使用することで、JavaオブジェクトからJSONを生成したり、その逆にJSONをJavaオブジェクトへ変換したりすることができます。 JSONオブジェクトをJavaオブジェクトに変換(デシリアライズ)するには、GsonクラスのfromJson()メソッドを呼び出します。このメソッドは、JSON文字列とターゲットとなるクラスを引数に受け取り、対応するJavaオブジェクトを返します。 構文 public <T> fromJson(java.lang.String json, java.lang.Class