Flexjson là thư viện nhẹ để serialize và deserialize đối tượng Java vào và từ định dạng JSON. Chúng ta cũng có thể serialize một Map sử dụng phương thức serialize() của lớp JSONSerializer, thực hiện shallow serialization của instance mục tiêu.
Cú pháp
public String serialize(Object target)
Ví dụ minh họa
import flexjson.JSONSerializer;
import java.util.*;
public class JsonSerializeMapTest {
public static void main(String[] args) {
JSONSerializer serializer = new JSONSerializer().prettyPrint(true);
Student student = new Student("Adithya", "Sai", 28, "Hyderabad");
Map<String, Object> map = new HashMap<String, Object>();
map.put("Student1", "Raja");
map.put("Student2", "Ravi");
map.put("my_student", student);
String jsonStr = serializer.serialize(map);
System.out.println(jsonStr);
}
}
// Lớp Student
class Student {
private String firstName;
private String lastName;
private int age;
private String address;
public Student() {}
public Student(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 String getLastName() { return lastName; }
public int getAge() { return age; }
public String getAddress() { return address; }
public String toString() {
return "Student[ " + "firstName = " + firstName + ", lastName = " + lastName + ", age = " + age + ", address = " + address + " ]";
}
}
Kết quả đầu ra
{
"my_student": {
"address": "Hyderabad",
"age": 28,
"class": "Student",
"firstName": "Adithya",
"lastName": "Sai"
},
"Student1": "Raja",
"Student2": "Ravi"
}
Lưu ý: Flexjson tự động thêm trường "class" để lưu tên lớp khi deserialize. Thư viện này ít được bảo trì so với Jackson/Gson, cân nhắc kỹ trước khi dùng cho project mới.