반응형
Gson은 자바 객체와 JSON 간의 변환을 간단하게 처리할 수 있도록 해주는 강력한 라이브러리입니다. 이번 글에서는 객체를 JSON으로 변환하기, JSON을 객체로 변환하기, 기본 데이터 타입 변환에 대해 자세히 알아보겠습니다.
객체를 JSON으로 변환하기 (toJson())
Gson의 toJson() 메서드는 자바 객체를 JSON 형식으로 직렬화할 때 사용됩니다. 간단한 객체를 JSON 문자열로 변환하는 예제를 살펴보겠습니다.
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
Gson gson = new Gson();
// 객체 생성
Person person = new Person("김철수", 30, "서울");
// 객체를 JSON 문자열로 변환
String json = gson.toJson(person);
System.out.println("JSON: " + 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;
}
}
출력 결과:
JSON: {"name":"김철수","age":30,"city":"서울"}
위 코드에서는 Person 객체가 JSON 문자열로 변환되었습니다. 이 과정은 API 응답 데이터를 생성하거나 파일로 저장할 때 유용합니다.
또한, 리스트와 맵 같은 복잡한 데이터 구조도 쉽게 JSON으로 변환할 수 있습니다.
import com.google.gson.Gson;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
Gson gson = new Gson();
// 리스트 데이터
List<Person> people = Arrays.asList(
new Person("김철수", 30, "서울"),
new Person("박영희", 25, "부산")
);
// 리스트를 JSON으로 변환
String json = gson.toJson(people);
System.out.println("JSON: " + 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;
}
}
출력 결과:
JSON: [{"name":"김철수","age":30,"city":"서울"},{"name":"박영희","age":25,"city":"부산"}]
반응형
JSON을 객체로 변환하기 (fromJson())
Gson의 fromJson() 메서드는 JSON 문자열을 자바 객체로 역직렬화할 때 사용됩니다.
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
Gson gson = new Gson();
// JSON 문자열
String json = "{\"name\":\"최지훈\",\"age\":28,\"city\":\"대구\"}";
// JSON 문자열을 객체로 변환
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;
}
출력 결과:
이름: 최지훈
나이: 28
도시: 대구
리스트 같은 복잡한 데이터 구조를 처리하려면 TypeToken을 사용해야 합니다.
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) {
Gson gson = new Gson();
// JSON 문자열
String json = "[{\"name\":\"김철수\",\"age\":30,\"city\":\"서울\"}," +
"{\"name\":\"박영희\",\"age\":25,\"city\":\"부산\"}]";
// JSON을 리스트로 변환
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;
}
출력 결과:
이름: 김철수
나이: 30
도시: 서울
---
이름: 박영희
나이: 25
도시: 부산
---
기본 데이터 타입 변환 예제
Gson은 기본 데이터 타입도 쉽게 JSON 문자열로 변환하거나 역직렬화할 수 있습니다.
1. 기본 데이터 타입 JSON 변환
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
Gson gson = new Gson();
int number = 100;
String jsonNumber = gson.toJson(number);
System.out.println("숫자를 JSON으로: " + jsonNumber);
boolean flag = true;
String jsonFlag = gson.toJson(flag);
System.out.println("불리언을 JSON으로: " + jsonFlag);
}
}
출력 결과:
숫자를 JSON으로: 100
불리언을 JSON으로: true
2. 기본 데이터 타입 JSON 역직렬화
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
Gson gson = new Gson();
String jsonNumber = "100";
int number = gson.fromJson(jsonNumber, int.class);
System.out.println("JSON을 숫자로: " + number);
String jsonFlag = "true";
boolean flag = gson.fromJson(jsonFlag, boolean.class);
System.out.println("JSON을 불리언으로: " + flag);
}
}
출력 결과:
JSON을 숫자로: 100
JSON을 불리언으로: true
참고사이트
Gson 공식 문서: https://github.com/google/gson
반응형
'JAVA' 카테고리의 다른 글
[JAVA] Gson의 필드 컨트롤 (0) | 2024.12.14 |
---|---|
[JAVA] Gson과 복합 객체 (0) | 2024.12.14 |
[JAVA] Gson의 고급 기능 (1) | 2024.12.14 |
[JAVA] Gson과 Java 컬렉션 (0) | 2024.12.13 |
[JAVA] Gson 환경 설정 (0) | 2024.11.24 |
[JAVA] Gson 이란? (1) | 2024.11.23 |
[JAVA] List와 Java 8 이상 기능 통합 (0) | 2024.11.22 |
[JAVA] List 자주 사용하는 유틸리티 메서드와 트릭 (0) | 2024.11.21 |