JavaでFlexjsonを使ってオブジェクトのリストをJSONにシリアライズする方法
Flexjsonは、JavaオブジェクトをJSON形式にシリアライズ(直列化)・デシリアライズ(復元)するための軽量なライブラリです。この記事では、オブジェクトのリストをJSONに変換する方法を解説します。
serialize()メソッドによるリストのシリアライズ
JSONSerializerクラスが提供するserialize()メソッドを使うと、対象インスタンスのシャロー(浅い)シリアライズを実行できます。オブジェクトのリストを変換するには、List型のリストを引数としてserialize()メソッドに渡すだけです。
構文
public String serialize(Object target)
戻り値はString型で、シリアライズされたJSON文字列が返されます。また、prettyPrint(true)を設定すると、インデント付きの整形されたJSONが出力され、可読性が向上します。
実装例
以下は、Studentクラスのインスタンスを3つ作成し、それらをListに格納してJSONに変換するサンプルコードです。
import flexjson.JSONSerializer;
import java.util.*;
public class JsonSerializeListTest {
public static void main(String[] args) {
// 整形されたJSONを出力する設定
JSONSerializer serializer = new JSONSerializer().prettyPrint(true);
Student s1 = new Student("Raja", "Ramesh", 28, "Hyderabad");
Student s2 = new Student("Suresh", "Kumar", 30, "Chennai");
Student s3 = new Student("Surya", "Krishna", 35, "Pune");
List<Student> students = Arrays.asList(s1, s2, s3);
String jsonStr = serializer.serialize(students);
System.out.println(jsonStr);
}
}
// Studentクラス
class Student {
private String firstName;
private String lastName;
private int age;
private String address;
public Student() {}
public Student(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;
}
@Override
public String toString() {
return "Student[ " +
"firstName = " + firstName +
", lastName = " + lastName +
", age = " + age +
", address = " + address +
" ]";
}
}実行結果
上記のコードを実行すると、各Studentオブジェクトが配列形式のJSONとして出力されます。Flexjsonは自動的にgetterメソッドからプロパティ名を取得し、フィールドごとにJSONキーを生成します。
[
{
"address": "Hyderabad",
"age": 28,
"class": "Student",
"firstName": "Raja",
"lastName": "Ramesh"
},
{
"address": "Chennai",
"age": 30,
"class": "Student",
"firstName": "Suresh",
"lastName": "Kumar"
},
{
"address": "Pune",
"age": 35,
"class": "Student",
"firstName": "Surya",
"lastName": "Krishna"
}
]ポイントまとめ
- Flexjsonの依存関係をプロジェクトに追加することで利用可能になります。
- リスト全体を1回のserialize()呼び出しでJSON配列に変換できます。
- prettyPrint(true)を指定すると、人間が読みやすい整形済みJSONが得られます。
- デフォルトではシャローなシリアライズが行われるため、ネストしたオブジェクトまで含めたい場合はinclude()メソッドを使用します。
-
【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)
JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず
-
JavaのJWindowを使ってスプラッシュ画面を実装する方法
JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ