Flexjson이란?
Flexjson은 Java 객체를 JSON 형식으로 직렬화하고, JSON 데이터를 다시 Java 객체로 역직렬화할 수 있게 해주는 경량 라이브러리입니다. 별도의 복잡한 설정 없이 간단한 API만으로 객체와 JSON 간의 변환을 처리할 수 있어 많은 개발자에게 사랑받고 있습니다.
특히 Reader 스트림으로부터 Java 객체를 역직렬화해야 하는 경우에는 JSONDeserializer 클래스가 제공하는 deserialize() 메서드를 사용하면 됩니다. 이 메서드는 JSON 입력값으로 Reader 클래스의 인스턴스를 받아들이며, 파일, 네트워크 스트림 등 다양한 입력 소스에 유연하게 대응할 수 있습니다.
문법(Syntax)
public T deserialize(Reader input)
- 매개변수: JSON 데이터를 담고 있는 Reader 객체
- 반환값: 역직렬화된 제네릭 타입(T)의 Java 객체
예제(Example)
다음 예제에서는 JSON 문자열을 StringReader로 감싸 Reader 스트림 형태로 만든 뒤, 이를 deserialize() 메서드에 전달하여 Student 객체로 변환하는 과정을 보여줍니다.
import java.io.*;
import flexjson.JSONDeserializer;
public class JSONDeserializeReaderTest {
public static void main(String[] args) {
JSONDeserializer<Student> deserializer = new JSONDeserializer<Student>();
String jsonStr =
"{" +
"\"firstName\": \"Adithya\"," +
"\"lastName\": \"Sai\"," +
"\"age\": 25," +
"\"address\": \"Hyderabad\"," +
"\"class\": \"Student\"" +
"}";
Student student = deserializer.deserialize(new StringReader(jsonStr));
System.out.println(student);
}
}
// 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 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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String toString() {
return "Student[ " +
"firstName = " + firstName +
", lastName = " + lastName +
", age = " + age +
", address = " + address +
" ]";
}
}코드 설명
JSONDeserializer<Student>객체를 생성하여 역직렬화 대상 타입을 지정합니다.- JSON 문자열을
StringReader로 래핑하여 Reader 스트림으로 변환합니다. deserialize()메서드에 Reader를 전달하면 JSON 키와 일치하는 필드에 값이 자동으로 매핑됩니다.
참고: 실제 파일에서 JSON을 읽어야 하는 경우 new FileReader("data.json")처럼 FileReader를 전달하면 동일한 방식으로 역직렬화할 수 있습니다.
출력 결과(Output)
Student[ firstName = Adithya, lastName = Sai, age = 25, address = Hyderabad ]
정리
Flexjson의 JSONDeserializer.deserialize(Reader input) 메서드를 활용하면 문자열뿐만 아니라 파일, 네트워크 등 다양한 Reader 기반 입력 스트림에서 손쉽게 Java 객체를 역직렬화할 수 있습니다. JSON의 키 이름과 대상 클래스의 필드 이름만 일치한다면 별도의 매핑 설정 없이 자동으로 변환이 이루어진다는 점이 큰 장점입니다.