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を利用すれば、シリアライズ先を柔軟に制御でき、ログ出力やレスポンス生成などさまざまな場面で活用できます。
-
Javaで既存のJSONファイルにJSON文字列を追加する方法【Gson活用ガイド】
GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。 処理の流れ 基本的な手順は以下のとおりです。 JSONファイルを読み込み、Javaオブジェクトとしてパースします。 JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。 JSON配列を反復処理しながら、各JsonElementを出力します。 JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込
-
【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法
GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを