Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chuyển đổi JSON string thành Bean dùng JSON-lib API (Java)

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