Gson

moon.kick·2025년 5월 2일

좋아, 정리해서 쉽게 알려줄게!
(너 결석한 날 했던 실습이니까 "Gson 기본 사용법" 위주로 설명할게.)


📚 Gson (Google + JSON) 기본

Gson자바 객체JSON 문자열 간 변환을 쉽게 도와주는 Google에서 만든 라이브러리야.

우리가 해야 하는 건:

  • 직렬화(Serialization): Java 객체 ➡️ JSON 문자열로 변환
  • 역직렬화(Deserialization): JSON 문자열 ➡️ Java 객체로 변환

🛠 준비: 라이브러리 추가

  • gson-2.8.6.jar 파일을 lib 폴더에 넣는다.
  • 프로젝트에 라이브러리 등록해줘야 해. (Eclipse라면 Build Path → Add External JARs로 추가)

✨ 기본 사용법

1. Java 객체 → JSON (직렬화)

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        // 1. 변환할 객체 생성
        Person person = new Person("홍길동", 25);

        // 2. Gson 객체 생성
        Gson gson = new Gson();

        // 3. 객체를 JSON 문자열로 변환
        String json = gson.toJson(person);

        // 4. 결과 출력
        System.out.println(json);
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

출력 결과:

{"name":"홍길동","age":25}

2. JSON → Java 객체 (역직렬화)

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        // 1. JSON 문자열 준비
        String json = "{\"name\":\"홍길동\",\"age\":25}";

        // 2. Gson 객체 생성
        Gson gson = new Gson();

        // 3. JSON 문자열을 Java 객체로 변환
        Person person = gson.fromJson(json, Person.class);

        // 4. 결과 출력
        System.out.println(person.getName()); // 홍길동
        System.out.println(person.getAge());  // 25
    }
}

class Person {
    private String name;
    private int age;

    public Person() {} // 역직렬화할 때 기본 생성자 필요

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

💬 요약

구분설명메소드
직렬화Java 객체 → JSONgson.toJson(Object)
역직렬화JSON → Java 객체gson.fromJson(String, Class<T>)

🧠 추가 팁

  • 객체뿐만 아니라 List, Map 등 복잡한 구조도 변환 가능해.
  • 날짜나 포맷 커스터마이징도 가능 (GsonBuilder 사용).
  • @SerializedName 어노테이션 쓰면 JSON 이름 다르게 맵핑할 수도 있어.

요약 멘트
👉 Gson은 쉽게 객체랑 JSON을 왔다갔다 하게 도와주는 도구다!
👉 gson.toJson(객체) ➡️ JSON 변환
👉 gson.fromJson(JSON, 클래스명.class) ➡️ 객체 변환


필요하면 List, Map, GsonBuilder 고급 버전까지도 예시 추가해줄까? ✨
(바로 이어서 심화버전도 해볼래?)

profile
@mgkick

0개의 댓글