JavaのJSON-lib APIでJSONオブジェクトをBeanに変換する方法
JSONObjectクラスは、名前と値のペア(順序は保証されない)からなるコレクションです。一方、Beanとは、メンバーフィールドに対するsetterメソッドとgetterメソッドを備えたクラスを指します。JSON-libライブラリでは、JSONObjectクラスが提供するtoBean()メソッドを使うことで、JSONオブジェクトを簡単にJava Beanへ変換することができます。
toBean()メソッドの構文
public static Object toBean(JSONObject jsonObject, Class beanClass)
このメソッドは、第1引数に変換元のJSONObject、第2引数に変換先のBeanクラスを指定します。戻り値はObject型なので、実際のBeanクラスにキャストして使用します。
実装例
以下の例では、Employeeクラスのインスタンスを一度JSONオブジェクトに変換し、その後toBean()メソッドで再びEmployeeオブジェクトに戻しています。
import net.sf.json.JSONObject;
public class ConvertJSONObjToBeanTest {
public static void main(String[] args) {
Employee emp = new Employee("Sai", "Ram", 30, "Bangalore");
// BeanからJSONオブジェクトへの変換
JSONObject jsonObj = JSONObject.fromObject(emp);
System.out.println(jsonObj.toString(3)); // 整形して出力
// JSONオブジェクトからBeanへの変換
emp = (Employee) JSONObject.toBean(jsonObj, Employee.class);
System.out.println(emp.toString());
}
// Employeeクラス(Bean)
public static class Employee {
private String firstName, lastName, address;
private int age;
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 void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Employee[ " +
"firstName = " + firstName +
", lastName = " + lastName +
", age = " + age +
", address = " + address +
" ]";
}
}
}
実行結果
{
"firstName": "Sai",
"lastName": "Ram",
"address": "Bangalore",
"age": 30
}
Employee[ firstName = Sai, lastName = Ram, age = 30, address = Bangalore ]
ポイント
- toBean()メソッドで正しく変換を行うには、対象のクラスがデフォルトコンストラクタ(引数なしのコンストラクタ)を持っている必要があります。
- 各フィールドに対応するgetter/setterメソッドが定義されていることで、JSON-libがリフレクションを通じて値を自動的にマッピングします。
- toString(3)のようにインデント数を指定すると、JSONを見やすい形式(pretty print)で出力できます。
-
JavaでJSON文字列をJSONオブジェクトに変換する方法を徹底解説
JSONとはJSON(JavaScript Object Notation)は、データの転送や保存に広く利用されている軽量なデータ交換フォーマットです。人間にとって読み書きしやすく、機械にとっても解析が容易なため、Web APIや設定ファイルなど、さまざまな場面で採用されています。JSONObjectとJSONArrayの役割JSONObjectクラスは、文字列からテキストを解析して、Mapのようなオブジェクトを生成します。このオブジェクトには、内容を操作するためのメソッドや、JSON仕様に準拠したオブジェクトのシリアライズを生成するメソッドが用意されています。一方、JSONArrayクラスは
-
JavaオブジェクトをJSONに変換する方法(Jackson・Gsonの使い方)
このチュートリアルでは、JavaオブジェクトをJSON形式に変換する方法を、定番ライブラリであるJacksonとGsonの2つを使って解説します。 サンプルとして使用するのは、ごく標準的なPOJO(Plain Old Java Object)であるPersonクラスです。Personオブジェクトを作成したら、それぞれのライブラリを使ってJSONへ変換してみましょう。 Person.java import java.util.List; import java.util.Map; public class Person { String name; Integer age;