คลาส JSONObject เป็นคอลเลกชันของคู่ name/value pairs (unordered) ในขณะที่ bean เป็นคลาสที่มีเมธอด setter และ getter สำหรับฟิลด์สมาชิก เราสามารถแปลง JSON object เป็น bean โดยใช้เมธอด toBean() ของคลาส JSONObject
Syntax
public static Object toBean(JSONObject jsonObject, Class beanClass)
ตัวอย่างการใช้งาน
import net.sf.json.JSONObject;
public class ConvertJSONObjToBeanTest {
public static void main(String[] args) {
Employee emp = new Employee("Sai", "Ram", 30, "Bangalore");
JSONObject jsonObj = JSONObject.fromObject(emp);
System.out.println(jsonObj.toString(3)); // pretty print JSON
emp = (Employee) JSONObject.toBean(jsonObj, Employee.class);
System.out.println(emp.toString());
}
// Employee class
public static class Employee {
private String firstName, lastName, address;
private int age;
public Employee() {}
public Employee(String firstName, String lastName, int age, String address) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.address = address;
}
// getters และ setters...
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; }
public String toString() {
return "Employee[ firstName = " + firstName + ", lastName = " + lastName +
", age = " + age + ", address = " + address + " ]";
}
}
}
ผลลัพธ์ (Output)
{
"firstName": "Sai",
"lastName": "Ram",
"address": "Bangalore",
"age": 30
}
Employee[ firstName = Sai, lastName = Ram, age = 30, address = Bangalore ]
คำอธิบายขั้นตอน
- สร้าง Java object (Employee)
- ใช้
JSONObject.fromObject()แปลง Java object เป็น JSONObject - ใช้
JSONObject.toBean()แปลง JSONObject กลับเป็น Java bean
ข้อกำหนดของ Bean Class
- ต้องมี no-argument constructor (public)
- ต้องมี getter/setter สำหรับทุก property
- Property name ต้องตรงกับ JSON field name (camelCase convention)
สรุป
JSON-lib ให้การแปลงสองทาง (round-trip) ระหว่าง Java bean และ JSONObject อย่างง่ายดาย: Bean ↔ JSONObject ↔ Bean เหมาะสำหรับโปรเจกต์ที่ใช้ JSON-lib อยู่แล้ว