본문 바로가기
IT 개발 이야기/Java

[Java] Gson Library - API 사용법( GsonBuilder 옵션 정보 )

by 개발자 Aiden 2023. 3. 6.
반응형

GsonBuilder의 다양한 옵션으로 효율적인 JSON 처리하기

Gson 라이브러리는 JSON 데이터 처리에 있어 Java 개발자들에게 필수적인 도구 중 하나입니다. 특히, GsonBuilder는 Gson 객체 생성 시 다양한 옵션을 제공하여, 개발자가 원하는 방식으로 JSON 데이터를 처리할 수 있게 도와줍니다. 이번 글에서는 GsonBuilder의 주요 옵션들과 그 활용법에 대해 다뤄보겠습니다.

Gson Library - GsonBuilder옵션정보


GsonBuilder란?

GsonBuilder는 Google의 Gson 라이브러리에서 제공하는 객체 생성 도구입니다. 기본적인 Gson 객체 생성 외에도, 다양한 설정 옵션을 통해 사용자가 원하는 형태와 기능으로 Gson 객체를 커스터마이징 할 수 있게 해줍니다. 이를 통해, JSON 데이터의 직렬화 및 역직렬화 과정에서 발생할 수 있는 다양한 상황에 대응하며, 효율적이고 안정적인 데이터 처리를 지원합니다.


Gson 객체 생성 방법

Gson 객체를 생성하는 방법은 크게 두 가지입니다.

1. Gson gson = new Gson();
2. Gson gson = new GsonBuilder().create();

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

public class GsonUtil {
		
  private static Gson gson1 = new Gson();
    
  private static Gson gson2 = new GsonBuilder()
          .disableHtmlEscaping()
          .setPrettyPrinting()
          .serializeNulls()
          .create();		
}


GsonBuilder를 활용하면, 날짜 형식 지정, 널 값 처리, 필드 명 변경 등의 다양한 옵션을 설정하여 Gson 객체를 생성할 수 있습니다. 이러한 옵션들은 실무에서 JSON 데이터 처리에 있어 다양한 요구 사항과 상황에 따라 유용하게 사용됩니다.

 

실무에서 자주 사용하는 GsonBuilder 옵션들과 활용법

new GsonBuilder().disableHtmlEscaping().create();


기본적으로 Gson은 < >와 같은 HTML 문자를 유니코드로 이스케이프 처리합니다. 그러나 'disableHtmlEscaping()' 옵션을 사용하면, GsonBuilder를 통해 생성된 Gson 객체가 HTML 문자를 그대로 전달할 수 있게 됩니다.

○ OPTION 적용 전

public class GsonUtil {
  private static Gson gson = new GsonBuilder().create();
  
  private static String getJsonData() {
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("data", "Test Data < Aiden > 개발자 이야기.");
 
    return gson.toJson(jsonObject);
  }
  
  public static void main(String[] args) {
    System.out.println(getJsonData());
  }
}

--- Result ------------------------------------------------------------

{"data":"Test Data \u003c Aiden \u003e 개발자 이야기."}


○ OPTION 적용 후

public class GsonUtil {
		
  private static Gson gson = new GsonBuilder()
            .disableHtmlEscaping()
            .create();

  private static String getJsonData() {
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("data", "Test Data < Aiden > 개발자 이야기.");
 
    return gson.toJson(jsonObject);
  }
  
  public static void main(String[] args) {
    System.out.println(getJsonData());
  }
}

--- Result ------------------------------------------------------------

{"data":"Test Data < Aiden > 개발자 이야기."}
반응형

 

new GsonBuilder().setPrettyPrinting().create();


'setPrettyPrinting()' 옵션은 별도의 기능을 추가하는 것이 아닌, 단순히 JSON 문자열을 가독성 좋게 출력하는 옵션입니다. 이 옵션을 사용하면 GsonBuilder를 통해 생성된 Gson 객체가 JSON 문자열을 들여쓰기와 개행을 적용하여 가독성을 높여주게 됩니다.

○ OPTION 적용 전

public class GsonUtil {
		
  private static Gson gson = new GsonBuilder().create();
	
  private static UserInfo getData(){
    UserInfo userInfo = new UserInfo();
    userInfo.setNo("5459");
    userInfo.setName("Aiden");		
		
    List<String> roles = new ArrayList<>();
    roles.add("Role_1");
    roles.add("Role_2");
    roles.add("Role_3");

    userInfo.setRoles(roles);
    return userInfo;
  }
  
  public static void main(String[] args) {	
    System.out.println(toJson(getData()));
  }
}

--- Result ------------------------------------------------------

{"no":"5459","name":"Aiden","roles":["Role_1","Role_2","Role_3"]}


○ OPTION 적용 후

public class GsonUtil {
		
  private static Gson gson = new GsonBuilder()
            .setPrettyPrinting()
            .create();
	
  private static UserInfo getData(){
    UserInfo userInfo = new UserInfo();
    userInfo.setNo("5459");
    userInfo.setName("Aiden");		
		
    List<String> roles = new ArrayList<>();
    roles.add("Role_1");
    roles.add("Role_2");
    roles.add("Role_3");

    userInfo.setRoles(roles);
    return userInfo;
  }
  
  public static void main(String[] args) {	
    System.out.println(toJson(getData()));
  }
}

--- Result ----------------------------------

{
  "no": "5459",
  "name": "Aiden",
  "roles": [
    "Role_1",
    "Role_2",
    "Role_3"
  ]
}



new GsonBuilder().serializeNulls().create();


'serializeNulls()' 옵션은 Gson 객체가 직렬화 과정에서 null인 모든 필드를 포함하도록 설정하는 옵션입니다. 기본적으로 Gson은 null인 필드를 생략하므로, 이 옵션을 사용하면 null로 인해 필드가 누락되는 경우 발생할 수 있는 부작용을 예방할 수 있습니다. 따라서 이 옵션을 적용하는 것을 추천합니다.

○ OPTION 적용 전

public class GsonUtil {
		
  private static Gson gson = new GsonBuilder()
            .setPrettyPrinting()
            .create();
	
  private static UserInfo getData(){
    UserInfo userInfo = new UserInfo();
    userInfo.setNo(null); // null.
    userInfo.setName("Aiden");		
		
    List<String> roles = new ArrayList<>();
    roles.add("Role_1");

    userInfo.setRoles(roles);
    return userInfo;
  }
  
  public static void main(String[] args) {	
    System.out.println(toJson(getData()));
  }
}

--- Result ----------------------------------

{
  "name": "Aiden",
  "roles": [
    "Role_1"
  ]
}


○ OPTION 적용 후

public class GsonUtil {
		
  private static Gson gson = new GsonBuilder()
            .setPrettyPrinting()
            .serializeNulls()
            .create();
	
  private static UserInfo getData(){
    UserInfo userInfo = new UserInfo();
    userInfo.setNo(null); // null.
    userInfo.setName("Aiden");		
		
    List<String> roles = new ArrayList<>();
    roles.add("Role_1");

    userInfo.setRoles(roles);
    return userInfo;
  }
  
  public static void main(String[] args) {	
    System.out.println(toJson(getData()));
  }
}

--- Result ----------------------------------

{
  "no": null,
  "name": "Aiden",
  "roles": [
    "Role_1"
  ]
}


그 외에도 GsonBuilder에 다양한 옵션들이 존재하지만, 실무에서는 위에서 소개한 옵션들이 가장 많이 사용됩니다. 이러한 옵션들을 활용하여 우리는 Gson을 이용한 JSON 처리를 보다 효율적이고 유연하게 수행할 수 있습니다. 각 프로젝트의 요구 사항에 맞게 옵션을 조합하여 사용하시길 바랍니다.


※ Gson 라이브러리 활용: Java와 JSON 간 데이터 변환 방법

 

[Java] Object to Json / Json to Map 데이터 변환 예제( Gson Library )

Gson 라이브러리를 활용한 JSON 데이터 변환 방법을 알아보자. Gson 이란? Gson은 Java 객체를 Json 표현으로 변환하거나 Json 문자열을 동등한 Java 객체로 변환하는 데 사용할 수 있는 Java Library이다. ○ G

aday7.tistory.com

반응형

댓글


loading