Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Flexjson으로 JSON 문자열을 출력 핸들러(Output Handler)에 직렬화하는 방법

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에 들여쓰기를 적용해 가독성을 높여 줍니다.