【Java入門】Flexjsonでオブジェクト配列をJSONにシリアライズする方法
Flexjsonは、JavaオブジェクトをJSON形式へシリアライズ(直列化)・デシリアライズ(非直列化)するための軽量ライブラリです。オブジェクトの配列をシリアライズしたい場合も、JSONSerializerクラスが提供するserialize()メソッドを使うだけで簡単に実現できます。このメソッドは、対象インスタンスに対して浅い(shallow)シリアライズを実行します。
serialize()メソッドの構文
public String serialize(Object target)
引数として渡したオブジェクト(ここでは配列)をJSON文字列に変換し、その結果をString型として返します。
サンプルプログラム
以下の例では、Studentオブジェクトを3つ生成して配列に格納し、それをJSON形式にシリアライズしています。prettyPrint(true)を指定することで、インデント付きの整形された読みやすいJSONが出力されます。
import flexjson.JSONSerializer;
public class JsonSerializeArrayTest {
public static void main(String[] args) {
JSONSerializer serializer = new JSONSerializer().prettyPrint(true);
Student stud1 = new Student("Adithya", "Sai", 28, "Hyderabad");
Student stud2 = new Student("Jai", "Dev", 30, "Chennai");
Student stud3 = new Student("Ravi", "Chandra", 35, "Pune");
Student[] students = {stud1, stud2, stud3};
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オブジェクトとして出力されます。
[
{
"address": "Hyderabad",
"age": 28,
"class": "Student",
"firstName": "Adithya",
"lastName": "Sai"
},
{
"address": "Chennai",
"age": 30,
"class": "Student",
"firstName": "Jai",
"lastName": "Dev"
},
{
"address": "Pune",
"age": 35,
"class": "Student",
"firstName": "Ravi",
"lastName": "Chandra"
}
]
ポイント解説
- prettyPrint(true):指定しない場合、JSONは1行で圧縮されて出力されます。デバッグや確認作業の際にはtrueを指定すると可読性が大きく向上します。
- "class"フィールド:Flexjsonはデフォルトでオブジェクトのクラス名を"class"プロパティとして出力に含めます。不要な場合は
exclude("*.class")をチェーンして除外できます。 - 浅いシリアライズ:
serialize()はネストしたオブジェクトへの参照のみを出力します。関連オブジェクトの中身まで完全に出力したい場合は、deepSerialize()メソッドを使用してください。
-
JavaのJWindowを使ってスプラッシュ画面を実装する方法
JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ
-
JavaでJSON配列を作成する方法をわかりやすく解説
JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x