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

Flexjsonを使ってJSON文字列をJavaの出力ハンドラーにシリアライズする方法

Flexjsonは、JavaオブジェクトをJSON形式へシリアライズ(直列化)・デシリアライズ(非直列化)するための軽量なライブラリです。JSONへの変換を行う中心となるのがJSONSerializerクラスです。本記事では、WriterOutputHandlerクラスを使用して、シリアライズ結果を出力ハンドラー(OutputHandler)へ書き出す方法を解説します。WriterOutputHandlerはOutputHandlerインターフェースを実装しており、任意のWriterに対してJSONを出力できます。

WriterOutputHandlerクラスの構文

public class WriterOutputHandler extends Object implements OutputHandler

実装例

以下のコードでは、Employeeオブジェクトを作成し、prettyPrint(true)を指定して整形されたJSONとして、StringWriterに紐づいたWriterOutputHandlerへシリアライズしています。

import java.io.*;
import flexjson.JSONSerializer;
import flexjson.OutputHandler;
import flexjson.WriterOutputHandler;

public class JsonOutputHandlerTest {
    public static void main(String[] args) {
        // 整形されたJSONを出力するよう設定
        JSONSerializer serializer = new JSONSerializer().prettyPrint(true);
        Employee emp = new Employee("Raja", "Ramesh", 28, "Hyderabad");

        // StringWriterに紐づけた出力ハンドラーを生成
        OutputHandler out = new WriterOutputHandler(new StringWriter());
        serializer.serialize(emp, out);

        System.out.println(out.toString());
    }
}

// Employeeクラス
class Employee {
    private String firstName;
    private String lastName;
    private int age;
    private String address;

    public Employee() {
    }

    public Employee(String firstName, String lastName, int age, String address) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
        this.address = address;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }

    public String toString() {
        return "Employee[ " +
                "firstName = " + firstName +
                ", lastName = " + lastName +
                ", age = " + age +
                ", address = " + address +
                " ]";
    }
}

コードのポイント

  • prettyPrint(true):インデントや改行付きの読みやすいJSONを生成します。省略した場合は1行のコンパクトなJSONが出力されます。
  • WriterOutputHandler:java.io.Writer(ここではStringWriter)をラップし、シリアライズ結果をそこへ書き込みます。ファイルやネットワークストリームなど、他のWriterにも応用可能です。
  • serialize(Object, OutputHandler):対象オブジェクトと出力先ハンドラーを渡すことで、直接ストリームへJSONを書き出せます。

出力結果

{
  "address": "Hyderabad",
  "age": 28,
  "class": "Employee",
  "firstName": "Raja",
  "lastName": "Ramesh"
}

このように、WriterOutputHandlerを利用すれば、シリアライズ先を柔軟に制御でき、ログ出力やレスポンス生成などさまざまな場面で活用できます。

  1. Javaで既存のJSONファイルにJSON文字列を追加する方法【Gson活用ガイド】

    GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。 処理の流れ 基本的な手順は以下のとおりです。 JSONファイルを読み込み、Javaオブジェクトとしてパースします。 JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。 JSON配列を反復処理しながら、各JsonElementを出力します。 JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込

  2. 【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法

    GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを