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

Javaのjavax.json APIでJSONを見やすく整形出力(Pretty Print)する方法

javax.jsonによるJSON処理の概要

javax.jsonパッケージは、JSONを処理するためのオブジェクトモデルAPI(Object Model API)を提供しています。このオブジェクトモデルAPIは高レベルAPIであり、JSONのオブジェクト構造や配列構造に対してイミュータブル(不変)なオブジェクトモデルを提供するのが特徴です。

これらのJSON構造は、JsonObjectインターフェースやJsonArrayインターフェースを使ってオブジェクトモデルとして表現できます。さらに、JsonGeneratorインターフェースを使用すれば、JSONデータをストリーミング方式で出力へ書き込むことも可能です。

そして、JSONを見やすい形式で整形して生成したい場合には、JsonGenerator.PRETTY_PRINTINGという設定プロパティを利用します。

JSONを整形出力するサンプルコード

以下の例では、文字列形式のJSONを読み込み、インデント付きの整形済み(Pretty Print)JSONとして出力しています。

import java.io.*;
import java.util.*;
import javax.json.*;
import javax.json.stream.*;

public class JSONPrettyPrintTest {
    public static void main(String args[]) {
        String jsonString = "{\"name\":\"Raja Ramesh\",\"age\":\"35\",\"salary\":\"40000\"}";
        StringWriter sw = new StringWriter();
        try {
            // 文字列からJSONを読み込む
            JsonReader jsonReader = Json.createReader(new StringReader(jsonString));
            JsonObject jsonObj = jsonReader.readObject();

            // PRETTY_PRINTINGを有効にした設定マップを作成
            Map<String, Object> map = new HashMap<>();
            map.put(JsonGenerator.PRETTY_PRINTING, true);

            // 設定を適用したJsonWriterFactoryを生成し、書き込み
            JsonWriterFactory writerFactory = Json.createWriterFactory(map);
            JsonWriter jsonWriter = writerFactory.createWriter(sw);
            jsonWriter.writeObject(jsonObj);
            jsonWriter.close();
        } catch(Exception e) {
            e.printStackTrace();
        }

        String prettyPrint = sw.toString();
        System.out.println(prettyPrint); // 整形されたJSONを出力
    }
}

ポイント解説

  • Json.createReader(): 文字列やReaderからJSONを読み込み、JsonObjectとして取得します。
  • JsonGenerator.PRETTY_PRINTING: このプロパティをtrueに設定したMapをJson.createWriterFactory()に渡すことで、インデントや改行が付いた整形済みJSONが生成されます。
  • StringWriter: 出力先として使用することで、整形結果を文字列として受け取れます。

なお、javax.json APIを使用するには、クラスパスに実装ライブラリが必要です。Mavenを利用している場合は、以下のように依存関係を追加してください。

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1.4</version>
</dependency>

実行結果

上記のコードを実行すると、次のようにインデントと改行が整えられた読みやすいJSONが出力されます。

{
    "name": "Raja Ramesh",
    "age": "35",
    "salary": "40000"
}
  1. JavaのGsonライブラリでJSONを整形出力(Pretty Print)する方法

    Gsonは、Googleが開発したJava向けのJSONライブラリです。Gsonを利用することで、JavaオブジェクトからJSONを生成したり、JSON文字列をJavaオブジェクトへ変換(デシリアライズ)したりできます。 デフォルトでは、Gsonは余計な空白や改行を省いたコンパクト形式でJSONを出力します。ログの確認やデバッグ時にJSONを読みやすくしたい場合は、整形出力(Pretty Print)を有効にしましょう。そのためには、GsonBuilderクラスのsetPrettyPrinting()メソッドを使ってGsonインスタンスを構成します。このメソッドを呼び出すことで、インデントと改

  2. PythonでJSONファイルを見やすく整形表示(プリティプリント)する方法

    Pythonは、他の多くのプログラミング言語と同様に、JavaScript Object Notation(JSON)データをスムーズに扱うことができます。さまざまなソースからJSONデータを取り込み、他のファイルと同じように操作できるため、JSONファイルを読みやすい形で整形表示(プリティプリント)したい場合に非常に便利です。 この記事では、PythonでJSONファイルをプリティプリントする2つの方法をご紹介します。どちらの方法もターミナルとコマンドラインを使用しますが、そのうち1つはPythonの知識がまったく不要です。 プリティプリントとは?(JSONファイルで使う理由) 簡単に言え