JAVA

[JAVA] Gson 환경 설정

인생아 2024. 11. 24. 22:35
반응형

Gson 라이브러리를 사용하려면 프로젝트 빌드 도구에 Gson 의존성을 추가해야 합니다. MavenGradle은 자바 프로젝트에서 가장 널리 사용되는 빌드 도구로, 각각에서 Gson을 설치하는 방법은 아래와 같습니다.

1. Maven을 사용한 설치
프로젝트의 pom.xml 파일에 Gson 의존성을 추가합니다.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

추가 후 mvn install 명령을 실행하면 의존성이 다운로드되어 프로젝트에 추가됩니다.

예제: Maven 프로젝트 구조

project/
├── pom.xml
├── src/main/java/
│   └── Main.java

pom.xml 설정 후, 다음과 같이 Java 파일을 작성할 수 있습니다.

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        String json = gson.toJson(new Person("김철수", 30, "서울"));
        System.out.println(json);
    }
}

class Person {
    String name;
    int age;
    String city;

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

2. Gradle을 사용한 설치
build.gradle 파일에 Gson 의존성을 추가합니다.

dependencies {
    implementation 'com.google.code.gson:gson:2.10.1'
}

gradle build 명령을 실행하면 Gson 라이브러리가 다운로드됩니다.

예제: Gradle 프로젝트 구조

project/
├── build.gradle
├── src/main/java/
│   └── Main.java

build.gradle 설정 후, 다음과 같이 Java 파일을 작성할 수 있습니다.

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        String json = gson.toJson(new Person("박영희", 25, "부산"));
        System.out.println(json);
    }
}

class Person {
    String name;
    int age;
    String city;

    public Person(String name, int age, String city) {
        this.name = name;
        this.age = age;
        this.city = city;
    }
}
반응형

Gson의 기본 설정과 초기화

Gson은 기본 설정으로 바로 사용할 수 있을 뿐만 아니라, 다양한 커스터마이징 옵션을 제공합니다.

1. 기본 설정
Gson의 기본 인스턴스는 매우 간단하게 초기화됩니다.

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        String json = "{\"name\":\"이민호\",\"age\":22,\"city\":\"대구\"}";
        Person person = gson.fromJson(json, Person.class);
        System.out.println("이름: " + person.name);
        System.out.println("나이: " + person.age);
        System.out.println("도시: " + person.city);
    }
}

class Person {
    String name;
    int age;
    String city;
}

기본 설정은 데이터 직렬화와 역직렬화에 적합하며, 간단한 JSON 데이터를 처리할 때 유용합니다.

2. GsonBuilder를 사용한 설정 변경
GsonBuilder를 사용하면 Gson의 동작 방식을 커스터마이징할 수 있습니다. 예를 들어, Pretty Printing, null 값 포함, 필드 이름 변경 등이 가능합니다.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Main {
    public static void main(String[] args) {
        Gson gson = new GsonBuilder()
                .setPrettyPrinting()  // JSON을 읽기 쉽게 포맷팅
                .serializeNulls()     // null 값 포함
                .create();

        Person person = new Person("최지훈", 28, null);
        String json = gson.toJson(person);
        System.out.println(json);
    }
}

class Person {
    String name;
    int age;
    String city;

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

출력 결과:

{
  "name": "최지훈",
  "age": 28,
  "city": null
}

3. 필드 이름 변경 및 익명 클래스 사용
Gson에서는 객체의 필드 이름을 JSON의 키와 다르게 설정할 수 있습니다.

import com.google.gson.annotations.SerializedName;
import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        String json = "{\"full_name\":\"김철수\",\"age\":30,\"location\":\"서울\"}";
        
        Gson gson = new Gson();
        Person person = gson.fromJson(json, Person.class);
        System.out.println("이름: " + person.name);
        System.out.println("나이: " + person.age);
        System.out.println("도시: " + person.city);
    }
}

class Person {
    @SerializedName("full_name")
    String name;

    int age;

    @SerializedName("location")
    String city;
}

이 방식은 외부 API의 JSON 형식과 Java 객체를 쉽게 매핑할 때 매우 유용합니다.

4. 복잡한 데이터 처리 (배열, 리스트, 맵)
Gson을 사용하면 배열, 리스트, 맵과 같은 복잡한 데이터 구조도 처리할 수 있습니다.

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        String json = "[{\"name\":\"김철수\",\"age\":30,\"city\":\"서울\"}," +
                      "{\"name\":\"박영희\",\"age\":25,\"city\":\"부산\"}]";

        Gson gson = new Gson();
        Type listType = new TypeToken<List<Person>>() {}.getType();
        List<Person> people = gson.fromJson(json, listType);

        for (Person person : people) {
            System.out.println("이름: " + person.name);
            System.out.println("나이: " + person.age);
            System.out.println("도시: " + person.city);
            System.out.println("---");
        }
    }
}

class Person {
    String name;
    int age;
    String city;
}

참고사이트
Gson 공식 문서: https://github.com/google/gson
Maven 공식 사이트: https://maven.apache.org
Gradle 공식 사이트: https://gradle.org

반응형