Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)
Java 프로젝트에서 JSON을 객체로 바꾸는 일은 반복적으로 등장합니다. Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)는 특히 API 응답, 로그 파싱, 데이터 교환 등에서 자주 필요하며, Google의 Gson 라이브러리는 그 과정에 실무적인 해법을 제공합니다.
1. 🔑 Gson Maven 의존성 설정
프로젝트의 pom.xml에 Gson 의존성을 추가하면 간단히 시작할 수 있습니다. Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화) 작업을 하려면 안정된 최신 버전을 사용하는 것을 권장합니다.
pom.xml 의존성
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version> <!-- 최신 안정화 버전으로 업데이트 -->
</dependency>
2. 📝 데이터 매핑을 위한 VO (Value Object) 클래스
JSON 구조와 1:1로 대응하는 Java 클래스를 설계해야 합니다. 필드 이름이 JSON 키와 일치해야 기본 매핑이 자연스럽게 동작하고, 필요한 경우 어노테이션으로 세밀하게 제어할 수 있습니다.
`BaseVO.java` 클래스
import java.util.ArrayList;
public class BaseVO {
// JSON 키와 이름이 일치해야 합니다.
private String table;
private String action;
// 배열 형태의 데이터는 List나 ArrayList로 선언합니다.
ArrayList<Object> data = new ArrayList<Object>();
// 생성자, Getter, Setter, toString() 메서드 생략 없이 모두 구현해야 Gson이 정상 작동합니다.
public String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public ArrayList<Object> getData() {
return data;
}
public void setData(ArrayList<Object> data) {
this.data = data;
}
@Override
public String toString() {
return "BaseVO [table=" + table + ", action=" + action + ", data=" + data + "]";
}
}
3. 🚀 JSON 역직렬화 핵심 로직
가장 기본적인 흐름은 Gson 인스턴스를 만들고, JSON 문자열을 fromJson에 전달하는 것입니다. Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)는 이 단순한 호출로 대부분 해결되지만, 컬렉션이나 제네릭 타입이 섞이면 추가 처리가 필요합니다.
Java 변환 코드
// 1. Gson 객체 생성
Gson gson = new Gson();
// 2. JSON 문자열 (message)을 BaseVO 클래스 형태로 변환 (역직렬화)
// 'message'는 JSON 문자열을 담고 있는 변수입니다.
BaseVO baseVO = gson.fromJson(message, BaseVO.class);
// 3. 변환된 객체 확인
System.out.println(baseVO.toString());
// 출력 예시: BaseVO [table=trade, action=insert, data=[{...}, {...}]]
⚠️ 배열 처리 시 유의사항 (TypeToken)
위 예제에서 `data`를
ArrayList<Object>로 선언하면 Gson은 내부 요소를 Map 형태로 파싱합니다. 하지만 배열 안에 특정 VO 타입(예:TradeVO)이 들어온다면, 제네릭 타입 정보를 전달해 정확하게 매핑해야 합니다.단일 클래스 변환은 간단하지만, 제네릭 컬렉션은 아래처럼 TypeToken으로 타입을 명시하는 것이 안전합니다.
// Gson for List// List<MyVO> list = gson.fromJson(jsonString, new TypeToken<List<MyVO>>(){}.getType());
함께 보면 좋은 엔터프라이즈 사례
🚀 이 주제, 우리 서비스에 어떻게 적용할까요?
Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)를 실제 서비스와 조직에 녹여보고 싶다면, 현재 아키텍처와 운영 방식을 한 번 점검해 보는 것부터 시작해 보세요. 팀 위키나 기술 블로그, 사내 스터디 주제로도 아주 좋습니다.
이 글이 도움이 됐다면, 비슷한 엔터프라이즈 사례 글들도 함께 살펴보면서 우리 조직에 맞는 운영 상용구를 정의해 보세요.
댓글
댓글 쓰기