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

Java에서 Flexjson으로 객체 목록(List)을 JSON으로 직렬화하는 방법

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() 메서드를 추가로 활용하면 됩니다.