Thư viện JSON-lib serialize/deserialize Java beans, maps, arrays, collections sang JSON. Quy trình: String → JSONObject → Bean.
Cú pháp
public static Object toBean(JSONObject jsonObject, Class beanClass)
Ví dụ minh họa
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
public class JsonStringToBeanTest {
public static void main(String[] args) {
String jsonStr = "{\"firstName\":\"Adithya\",\"lastName\":\"Sai\",\"age\":30,\"technology\":\"Java\"}";
// String → JSONObject
JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(jsonStr);
System.out.println("JSON Object: " + jsonObj);
// JSONObject → Bean
Student student = (Student) JSONObject.toBean(jsonObj, Student.class);
System.out.println("Bean: " + student.toString());
}
static class Student {
private String firstName, lastName, technology;
private int age;
// 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 getTechnology() { return technology; }
public void setTechnology(String technology) { this.technology = technology; }
@Override
public String toString() {
return "Student[firstName=" + firstName + ", lastName=" + lastName +
", age=" + age + ", technology=" + technology + "]";
}
}
}
Output
{"firstName":"Adithya","lastName":"Sai","age":30,"technology":"Java"}
Student[firstName=Adithya, lastName=Sai, age=30, technology=Java]
Lưu ý quan trọng
- JSON-lib **đã cũ, không còn maintain** (last release 2010). Dự án mới **không nên dùng**.
- Thay thế hiện đại: Jackson (
ObjectMapper.readValue(json, Class)), Gson (gson.fromJson(json, Class)). - JSON-lib yêu cầu nhiều dependency: json-lib, ezmorph, commons-lang, commons-beanutils, commons-collections, commons-logging.
- Bean phải có **default constructor** và **setter/getter** theo JavaBean convention.
So sánh nhanh với Jackson/Gson
| Thư viện | API chính | Đặc điểm |
|---|---|---|
| JSON-lib | JSONObject.toBean() |
Cũ, nhiều dependency, ít feature |
| Jackson | ObjectMapper.readValue() |
Chuẩn de facto, nhanh, nhiều feature, annotation mạnh |
| Gson | Gson.fromJson() |
Đơn giản, nhẹ, API thân thiện |