Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 Gson의 fromJson()과 toJson() 메서드 차이점 총정리

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 형태로 내보낼 때 활용됩니다.