Gson은 Google에서 제공하는 라이브러리로, Java 객체를 JSON으로 변환(직렬화)하거나 그 반대로 JSON 문자열을 동일한 Java 객체로 변환(역직렬화)하는 데 사용됩니다. Java 객체를 JSON으로 파싱하거나 JSON을 Java 객체로 파싱하려면 먼저 자바 프로그램에 com.google.gson 패키지를 임포트해야 합니다.
Gson 인스턴스 생성 방법
Gson 인스턴스는 다음 두 가지 방식으로 생성할 수 있습니다.
- new Gson()을 사용하여 직접 생성하는 방법
- GsonBuilder 인스턴스를 만든 후 create() 메서드를 호출하여 생성하는 방법
GsonBuilder 방식은 직렬화/역직렬화 옵션(예: null 값 처리, 예쁘게 출력 등)을 설정해야 할 때 유용합니다.
예제 코드
아래 예제에서는 SortedMap 객체를 JSON 문자열로 변환합니다.
import java.lang.reflect.*;
import java.util.*;
import com.google.gson.*;
import com.google.gson.reflect.*;
public class ConvertMapToJsonTest {
public static void main(String args[]) {
SortedMap<String, String> data = new TreeMap<String, String>();
data.put("Raja", "Java");
data.put("Ravi", "SAP");
data.put("Surya", "Python");
data.put("Kiran", "Scala");
data.put("Vamsi", "Selenium");
Gson gson = new Gson();
Type gsonType = new TypeToken<SortedMap<String, String>>(){}.getType();
String gsonString = gson.toJson(data, gsonType);
System.out.println(gsonString);
}
}여기서 TypeToken은 제네릭 타입 정보를 런타임까지 보존하기 위해 사용되며, 복잡한 컬렉션 타입을 정확하게 직렬화할 수 있도록 도와줍니다.
출력 결과
{"Kiran":"Scala","Raja":"Java","Ravi":"SAP","Surya":"Python","Vamsi":"Selenium"}TreeMap은 키를 알파벳 순서로 정렬하기 때문에 출력 결과에서 키들이 사전순으로 나타나는 것을 확인할 수 있습니다. 이처럼 Gson을 활용하면 Map 데이터를 손쉽게 JSON 형식으로 변환할 수 있으며, REST API 응답 생성이나 설정 파일 작성 등 다양한 상황에서 활용할 수 있습니다.