Flexjson은 Java 객체를 JSON 형식으로 직렬화(serialize)하고 역직렬화(deserialize)할 수 있도록 지원하는 경량화된 라이브러리입니다. 별도의 복잡한 설정 없이도 간단한 API 호출만으로 객체를 JSON 문자열로 변환할 수 있어 많은 개발자에게 사랑받고 있습니다.
객체 목록(List)을 직렬화하려면 JSONSerializer 클래스가 제공하는 serialize() 메서드를 사용하면 됩니다. 이 메서드는 대상 인스턴스에 대해 얕은(shallow) 직렬화를 수행하며, List 타입의 객체 목록을 인자로 전달하기만 하면 됩니다.
문법(Syntax)
public String serialize(Object target)
예제 코드(Example)
아래 예제에서는 세 명의 학생 정보를 담은 Student 객체 목록을 생성한 후, Flexjson을 사용하여 JSON 문자열로 변환하는 과정을 보여줍니다. prettyPrint(true) 옵션을 사용하면 들여쓰기가 적용된 보기 좋은 JSON 출력 결과를 얻을 수 있습니다.
import flexjson.JSONSerializer;
import java.util.*;
public class JsonSerializeListTest {
public static void main(String[] args) {
// pretty print 옵션 활성화
JSONSerializer serializer = new JSONSerializer().prettyPrint(true);
Student s1 = new Student("Raja", "Ramesh", 28, "Hyderabad");
Student s2 = new Student("Suresh", "Kumar", 30, "Chennai");
Student s3 = new Student("Surya", "Krishna", 35, "Pune");
List<Student> students = Arrays.asList(s1, s2, s3);
String jsonStr = serializer.serialize(students);
System.out.println(jsonStr);
}
}
// 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 +
" ]";
}
}실행 결과(Output)
위 코드를 실행하면 다음과 같이 학생 객체 목록이 JSON 배열 형태로 변환되어 출력됩니다. 각 객체에는 필드 값과 함께 해당 객체의 클래스 이름을 나타내는 class 속성이 자동으로 포함되는 것을 확인할 수 있습니다.
[
{
"address": "Hyderabad",
"age": 28,
"class": "Student",
"firstName": "Raja",
"lastName": "Ramesh"
},
{
"address": "Chennai",
"age": 30,
"class": "Student",
"firstName": "Suresh",
"lastName": "Kumar"
},
{
"address": "Pune",
"age": 35,
"class": "Student",
"firstName": "Surya",
"lastName": "Krishna"
}
]이처럼 Flexjson을 활용하면 몇 줄의 코드만으로 Java 객체 목록을 손쉽게 JSON 형식으로 변환할 수 있습니다. 참고로 중첩된 객체까지 깊이 있는(deep) 직렬화가 필요하다면 include() 메서드를 추가로 활용하면 됩니다.