기본 콘텐츠로 건너뛰기

Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)

Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)

AI 생성 이미지: Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)
AI 생성 이미지: 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 객체로 변환하기 (역직렬화)는 적절한 VO 설계와 타입 정보 전달만으로 신뢰성 있게 수행됩니다. 작은 설정과 타입 처리로 예기치 않은 매핑 오류를 줄일 수 있습니다.

© 2025 칼퇴하는 개발자. 모든 권리 보유.

🚀 이 주제, 우리 서비스에 어떻게 적용할까요?

Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)를 실제 서비스와 조직에 녹여보고 싶다면, 현재 아키텍처와 운영 방식을 한 번 점검해 보는 것부터 시작해 보세요. 팀 위키나 기술 블로그, 사내 스터디 주제로도 아주 좋습니다.

이 글이 도움이 됐다면, 비슷한 엔터프라이즈 사례 글들도 함께 살펴보면서 우리 조직에 맞는 운영 상용구를 정의해 보세요.

AI 생성 이미지: Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)
AI 생성 이미지: Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)

댓글

이 블로그의 인기 게시물

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 (Request Parameter 전체보기)

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 Java Servlet Request Parameter 완전 정복 웹 애플리케이션에서 클라이언트로부터 전달되는 Request Parameter 를 확인하는 것은 필수입니다. 이 글에서는 Java Servlet 과 JSP 에서 GET/POST 요청 파라미터를 전체 출력하고 디버깅하는 방법을 다양한 예제와 함께 소개합니다. 1. 기본 예제: getParameterNames() 사용 Enumeration<String> params = request.getParameterNames(); System.out.println("----------------------------"); while (params.hasMoreElements()){ String name = params.nextElement(); System.out.println(name + " : " + request.getParameter(name)); } System.out.println("----------------------------"); 위 코드는 요청에 포함된 모든 파라미터 이름과 값을 출력하는 기본 방법입니다. 2. HTML Form과 연동 예제 <form action="CheckParamsServlet" method="post"> 이름: <input type="text" name="username"><br> 이메일: <input type="email" name="email"><b...

PostgreSQL 달력(일별,월별)

SQL 팁: GENERATE_SERIES로 일별, 월별 날짜 목록 만들기 SQL 팁: GENERATE_SERIES 로 일별, 월별 날짜 목록 만들기 데이터베이스에서 통계 리포트를 작성하거나 비어있는 날짜 데이터를 채워야 할 때, 특정 기간의 날짜 목록이 필요할 수 있습니다. PostgreSQL과 같은 데이터베이스에서는 GENERATE_SERIES 함수를 사용하여 이 작업을 매우 간단하게 처리할 수 있습니다. 1. 🗓️ 일별 날짜 목록 생성하기 2020년 1월 1일부터 12월 31일까지의 모든 날짜를 '1 day' 간격으로 생성하는 쿼리입니다. WITH date_series AS ( SELECT DATE(GENERATE_SERIES( TO_DATE('2020-01-01', 'YYYY-MM-DD'), TO_DATE('2020-12-31', 'YYYY-MM-DD'), '1 day' )) AS DATE ) SELECT DATE FROM date_series 이 쿼리는 WITH 절(CTE)을 사용하여 date_series 라는 임시 테이블을 만들고, GENERATE_SERIES 함수로 날짜를 채웁니다. 결과 (일별 출력) 2. 📅 월별 날짜 목록 생성하기 동일한 원리로, 간격을 '1 MONTH' 로 변경하면 월별 목록을 생성할 수 있습니다. TO...

CSS로 레이어 팝업 화면 가운데 정렬하는 방법 (top·left·transform 완전 정리)

레이어 팝업 센터 정렬, 이 코드만 알면 끝 (CSS 예제 포함) 이벤트 배너나 공지사항을 띄울 때 레이어 팝업(center 정렬) 을 깔끔하게 잡는 게 생각보다 어렵습니다. 화면 크기가 변해도 가운데에 고정되고, 모바일에서도 자연스럽게 보이게 하려면 position , top , left , transform 을 정확하게 이해해야 합니다. 이 글에서는 아래 내용을 예제로 정리합니다. 레이어 팝업(center 정렬)의 기본 개념 자주 사용하는 position: absolute / fixed 정렬 방식 질문에서 주신 스타일 top: 3.25%; left: 50%; transform: translateX(-50%) 의 의미 실무에서 바로 쓰는 반응형 레이어 팝업 HTML/CSS 예제 1. 레이어 팝업(center 정렬)이란? 레이어 팝업(레이어 팝업창) 은 새 창을 띄우는 것이 아니라, 현재 페이지 위에 div 레이어를 띄워서 공지사항, 광고, 이벤트 등을 보여주는 방식을 말합니다. 검색엔진(SEO) 입장에서도 같은 페이지 안에 HTML이 존재 하기 때문에 팝업 안의 텍스트도 정상적으로 인덱싱될 수 있습니다. 즉, “레이어 팝업 센터 정렬”, “레이어 팝업 만드는 방법”과 같이 관련 키워드를 적절히 넣어주면 검색 노출에 도움이 됩니다. 2. 질문에서 주신 레이어 팝업 스타일 분석 질문에서 주신 스타일은 다음과 같습니다. <div class="layer-popup" style="width:1210px; z-index:9001; position:absolute; top:3.25%; left:50%; transform:translateX(-50%);"> 레이어 팝업 내용 <...