Flexjson은 Java 객체를 JSON 형식으로 직렬화(Serialize)하거나 역직렬화(Deserialize)할 수 있도록 지원하는 경량 라이브러리입니다. 이 라이브러리에서 직렬화 작업의 핵심 역할을 하는 클래스가 바로 JSONSerializer입니다.
Flexjson에서는 WriterOutputHandler 클래스를 사용하여 JSON 문자열을 출력 핸들러(Output Handler)로 직렬화할 수 있습니다. WriterOutputHandler는 OutputHandler 인터페이스를 구현한 클래스로, 직렬화된 JSON 데이터를 Writer 기반의 출력 스트림으로 내보낼 때 활용됩니다.
문법(Syntax)
public class WriterOutputHandler extends Object implements OutputHandler
예제 코드(Example)
아래 예제에서는 StringWriter를 출력 대상으로 하는 WriterOutputHandler 객체를 생성하고, JSONSerializer의 prettyPrint(true) 옵션을 통해 보기 좋게 정렬된 JSON을 출력합니다.
import java.io.*;
import flexjson.JSONSerializer;
import flexjson.OutputHandler;
import flexjson.WriterOutputHandler;
public class JsonOutputHandlerTest {
public static void main(String[] args) {
// prettyPrint(true): 들여쓰기가 적용된 가독성 높은 JSON 생성
JSONSerializer serializer = new JSONSerializer().prettyPrint(true);
Employee emp = new Employee("Raja", "Ramesh", 28, "Hyderabad");
// StringWriter를 감싸는 WriterOutputHandler 생성
OutputHandler out = new WriterOutputHandler(new StringWriter());
// Employee 객체를 출력 핸들러로 직렬화
serializer.serialize(emp, out);
System.out.println(out.toString());
}
}
// Employee 클래스
class Employee {
private String firstName;
private String lastName;
private int age;
private String address;
public Employee() {
}
public Employee(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;
}
@Override
public String toString() {
return "Employee[ " +
"firstName = " + firstName +
", lastName = " + lastName +
", age = " + age +
", address = " + address +
" ]";
}
}실행 결과(Output)
위 코드를 실행하면 Employee 객체가 다음과 같이 알파벳 순서로 정렬되고 들여쓰기가 적용된 JSON 문자열로 변환되어 출력됩니다.
{
"address": "Hyderabad",
"age": 28,
"class": "Employee",
"firstName": "Raja",
"lastName": "Ramesh"
}핵심 정리
- JSONSerializer: Java 객체를 JSON으로 변환하는 Flexjson의 핵심 클래스입니다.
- WriterOutputHandler: OutputHandler 인터페이스를 구현하며, 직렬화 결과를 Writer 스트림으로 전달합니다.
- prettyPrint(true): 결과 JSON에 들여쓰기를 적용해 가독성을 높여 줍니다.