Gson은 Google에서 제공하는 자바(Java)용 라이브러리로, JSON 데이터를 손쉽게 생성하고 처리할 수 있도록 도와줍니다. 이 라이브러리의 핵심 메서드는 크게 두 가지로 나뉩니다.
- fromJson(): JSON 문자열을 자바 객체로 역직렬화(deserialize)하는 메서드
- toJson(): 자바 객체를 JSON 문자열로 직렬화(serialize)하는 메서드
두 메서드는 서로 반대되는 기능을 수행하며, 파라미터 구성에도 차이가 있습니다. fromJson()은 두 개의 파라미터를 받습니다. 첫 번째는 파싱할 JSON 문자열, 두 번째는 JSON 문자열을 변환할 대상이 되는 자바 클래스 타입입니다. 반면 toJson()은 하나의 파라미터만 받으며, JSON 문자열로 변환하고자 하는 자바 객체를 전달하면 됩니다.
fromJson() 메서드 문법
public <T> fromJson(java.lang.String json, java.lang.Class<T> classOfT) throws JsonSyntaxException
아래 예제는 JSON 문자열을 Employee 객체로 변환하는 과정을 보여줍니다.
예제 코드
import com.google.gson.*;
public class FromJsonMethodTest {
public static void main(String[] args) {
String jsonString = "{'id':101, 'firstName':'Jai','lastName':'Adithya'}";
Gson gson = new Gson();
Employee emp = gson.fromJson(jsonString, Employee.class);
System.out.println(emp);
}
}
// Employee 클래스
class Employee {
private int id;
private String firstName;
private String lastName;
public Employee() {}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Id : " + id);
sb.append(", FirstName : " + firstName);
sb.append(", Last Name : " + lastName);
return sb.toString();
}
}출력 결과
Id : 101, FirstName : Jai, Last Name : Adithya
toJson() 메서드 문법
public java.lang.String toJson(java.lang.Object src)
다음 예제는 Employee 객체를 JSON 문자열로 변환하는 과정을 보여줍니다.
예제 코드
import com.google.gson.*;
public class ToJsonMethodTest {
public static void main(String[] args) {
Employee emp = new Employee();
emp.setId(110);
emp.setFirstName("Raja");
emp.setLastName("Ramesh");
Gson gson = new Gson();
String jsonString = gson.toJson(emp);
System.out.println(jsonString);
}
}
// Employee 클래스
class Employee {
private int id;
private String firstName;
private String lastName;
public Employee() {}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}출력 결과
{"id":110,"firstName":"Raja","lastName":"Ramesh"}정리: fromJson() vs toJson()
| 구분 | fromJson() | toJson() |
|---|---|---|
| 기능 | JSON → 자바 객체 (역직렬화) | 자바 객체 → JSON (직렬화) |
| 파라미터 수 | 2개 (JSON 문자열, 클래스 타입) | 1개 (변환할 객체) |
| 반환 타입 | 지정한 클래스의 객체(T) | String (JSON 문자열) |
이처럼 fromJson()은 외부에서 받은 JSON 데이터를 애플리케이션 내부에서 사용할 수 있는 객체로 변환할 때 유용하고, toJson()은 객체 데이터를 API 응답이나 파일 저장 등을 위해 JSON 형태로 내보낼 때 활용됩니다.