Gson은 Java 객체를 JSON 형식으로 변환할 수 있는 구글에서 제공하는 라이브러리입니다. 반대로 JSON 문자열을 동등한 Java 객체로 역직렬화하는 데에도 사용할 수 있습니다. 핵심 클래스는 Gson이며, new Gson()을 호출하여 간단히 생성할 수 있고, 다양한 설정이 필요한 경우에는 GsonBuilder 클래스를 사용해 Gson 인스턴스를 만들 수 있습니다.
객체 리스트를 JSON으로 변환하려면 먼저 Person 클래스를 정의한 후, Person 객체들의 리스트를 JSON 문자열로 직렬화하면 됩니다. 아래 예제에서는 GsonBuilder의 setPrettyPrinting() 메서드를 사용해 들여쓰기가 적용된 보기 좋은 JSON 출력 결과를 얻습니다.
예제 코드
import java.util.*;
import java.util.stream.*;
import com.google.gson.*;
public class JSONConverterTest {
public static void main( String[] args ) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
List list = Stream.of(new Person("Raja", "Ramesh", 30, "9959984800"),
new Person("Jai", "Dev", 25, "7702144400"),
new Person("Adithya", "Sai", 21, "7013536200"),
new Person("Chaitanya", "Sai", 28, "9656444150"))
.collect(Collectors.toList());
System.out.println("Convert list of person objects to Json:");
String json = gson.toJson(list); // 리스트를 JSON으로 변환
System.out.println(json);
}
}
// Person 클래스
class Person {
private String firstName, lastName, contact;
private int age;
public Person(String firstName, String lastName, int age, String contact) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.contact = contact;
}
public String toString() {
return "[" + firstName + " " + lastName + " " + age + " " +contact +"]";
}
}
실행 결과
Convert list of person objects to Json:
[
{
"firstName": "Raja",
"lastName": "Ramesh",
"contact": "9959984800",
"age": 30
},
{
"firstName": "Jai",
"lastName": "Dev",
"contact": "7702144400",
"age": 25
},
{
"firstName": "Adithya",
"lastName": "Sai",
"contact": "7013536200",
"age": 21
},
{
"firstName": "Chaitanya",
"lastName": "Sai",
"contact": "9656444150",
"age": 28
}
]
위 실행 결과에서 확인할 수 있듯이, gson.toJson() 메서드 하나만으로 Person 객체 리스트가 손쉽게 JSON 배열로 변환됩니다. 각 객체의 private 필드들도 자동으로 직렬화되며, setPrettyPrinting() 덕분에 들여쓰기가 포함된 가독성 높은 JSON이 출력됩니다. 실무에서는 API 응답 생성, 로그 기록, 데이터 저장 등 다양한 상황에서 이 방식을 활용할 수 있습니다.