Flexjson là thư viện nhẹ để serialize và deserialize đối tượng Java vào và từ JSON, cho phép cả deep và shallow copies. Để chạy chương trình Java với flexjson, cần import package flexjson. Có thể deserialize JSON thành đối tượng Java dùng phương thức deserialize() của JSONDeserializer, nhận input chuỗi JSON và tạo object graph typed tĩnh từ JSON representation. Mặc định dùng property "class" trong JSON để map dữ liệu untyped thành kiểu Java cụ thể.
Cú pháp
public T deserialize(String input)
Ví dụ minh họa
import flexjson.*;
public class DeserializeJSONTest {
public static void main(String[] args) {
JSONDeserializer<Student> deserializer = new JSONDeserializer<Student>();
String jsonStr = "{" +
"\"firstName\": \"Ravi\"," +
"\"lastName\": \"Chandra\"," +
"\"age\": 35," +
"\"class\": \"Student\"," +
"\"salary\": 50000.00" +
"}";
Student student = deserializer.deserialize(jsonStr);
System.out.println(student);
}
}
// Lớp Student
class Student {
private String firstName;
private String lastName;
private int age;
private double salary;
public Student() {}
public Student(String firstName, String lastName, int age, double salary) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.salary = salary;
}
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 double getSalary() { return salary; }
public void setSalary(double salary) { this.salary = salary; }
public String toString() {
return "Student[ " + "firstName = " + firstName + ", lastName = " + lastName + ", age = " + age + ", salary = " + salary + " ]";
}
}
Kết quả đầu ra
Student[ firstName = Ravi, lastName = Chandra, age = 35, salary = 50000.0 ]
Quan trọng: JSON input phải chứa trường "class": "Student" để Flexjson biết instantiate loại nào. Nếu không có, cần config TypeMapping.