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

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

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

요즘 Java와 관련된 웹 개발이나 API 개발에서 JSON 데이터 처리는 거의 필수적인 작업으로 자리 잡았습니다. 특히, 데이터 교환의 표준으로 자리 잡은 JSON 형식을 효과적으로 다루기 위한 도구가 필요하게 되었는데, 이번 글에서는 그 중에서도 Gson 라이브러리를 활용하여 객체를 JSON으로 변환하거나, JSON을 맵으로 변환하는 방법에 대해 알아보겠습니다.

JSON데이터처리-Gson Library


Gson 라이브러리란?

Gson은 Google에서 제공하는 Java 라이브러리로, Java 객체와 JSON 간의 직렬화 및 역직렬화를 지원합니다. 간단한 API와 함께 제공되어, 개발자들이 JSON 데이터를 쉽게 처리할 수 있게 도와줍니다. 특히, 사용자 정의 직렬화 및 역직렬화 기능을 지원하여 복잡한 객체 구조나 데이터 타입도 쉽게 처리할 수 있습니다.

Gson 라이브러리 적용하기

Maven을 사용하는 프로젝트에서는 다음과 같은 의존성을 추가하여 Gson 라이브러리를 쉽게 포함시킬 수 있습니다.

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
  <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
  </dependency>

 

Json Object 생성하기

Gson 라이브러리를 사용하면, JsonObject 클래스를 활용하여 간편하게 JSON 문자열을 생성할 수 있습니다.

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

public class GsonUtil {
		
  private static Gson gson = new GsonBuilder()
          .disableHtmlEscaping()
          .setPrettyPrinting()
          .serializeNulls()
          .create();
	
  private static String getJsonData() {
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("id", "aday7");
    jsonObject.addProperty("name", "Aiden");
 
    return gson.toJson(jsonObject);
  }
	
  public static void main(String[] args) {
    System.out.println(getJsonData());
  }
}

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

{
  "id": "aday7",
  "name": "Aiden"
}

 

Gson 객체 생성 방식

Gson 객체를 생성하는 방법에는 크게 두 가지가 있습니다.

1. 기본 객체 생성

Gson gson = new Gson();


2. 옵션 설정을 통한 객체 생성

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


`GsonBuilder`를 활용하면, JSON 데이터 처리 시 필요한 다양한 옵션을 설정할 수 있습니다. 예를 들어, 날짜 형식, 널 값 처리, 필드명의 대소문자 구분 등의 세부 설정이 가능합니다. 이를 통해 개발자의 요구사항에 맞게 더욱 세밀한 JSON 데이터 처리를 구현할 수 있습니다.

반응형


Gson 예제: 다양한 데이터 변환 방법


○ Json  ≫  Map 변환하기

JSON 문자열을 Java의 Map 객체로 변환하는 것은 웹 애플리케이션에서 자주 사용되는 기능 중 하나입니다. 특히, 동적인 데이터 구조를 다룰 때 유용하게 활용됩니다. Gson 라이브러리를 사용하면 이러한 변환 작업을 간결하게 처리할 수 있습니다.

  public static void main(String[] args) {
    String jsonData = "{\"id\":\"aday7\",\"name\":\"Aiden\"}";
		
    Map<String, Object> mapData = gson.fromJson(jsonData, new TypeToken<Map<String, Object>>(){}.getType());
    System.out.println(mapData.get("id"));
    System.out.println(mapData.get("name"));
  }

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

aday7
Aiden


gson.fromJson 메서드를 사용하면 동적 캐스팅을 통해 다양한 타입의 객체로 변환할 수 있습니다. 이렇게 함으로써, JSON 문자열을 효과적으로 원하는 Java 객체로 역직렬화할 수 있어 개발자들이 편리하게 데이터 처리를 수행할 수 있습니다.

  public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException {
    Object object = fromJson(json, (Type) classOfT);
    return Primitives.wrap(classOfT).cast(object);
  }

 

Map  ≫  Json 변환하기

반대로, Java의 Map 객체를 JSON 문자열로 변환하는 것도 자주 필요한 작업입니다. 이를 통해 서버와 클라이언트 간의 데이터 교환을 원활하게 진행할 수 있습니다.

  public static void main(String[] args) {	    
    Map<String, Object> mapData = new HashMap<>();
    mapData.put("id", "aday7");
    mapData.put("name", "Aiden");
		
    System.out.println(gson.toJson(mapData));
  }
  
----- Result ------------------------------------
  
{
  "name": "Aiden",
  "id": "aday7"
}

 

Object  ≫  Json 변환하기

Java 객체를 JSON 문자열로 변환하는 기능은 웹 서비스의 응답 생성 시 주로 사용됩니다. 이를 통해 클라이언트에게 필요한 데이터를 효과적으로 전달할 수 있습니다.

  private static UserInfo getData(){
    UserInfo userInfo = new UserInfo();
    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(gson.toJson(getData()));
  }
}

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

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

 

Json  ≫  Object 변환하기

JSON 문자열을 특정 Java 객체로 변환하는 것은 웹 서비스의 요청 처리 시 주로 활용됩니다. 클라이언트로부터 받은 데이터를 Java 객체로 변환하여 서비스 로직에 활용할 수 있게 됩니다.

  public static void main(String[] args) {
    String jsonData = 
            "{\"no\":null,\"name\":\"Aiden\",\"roles\":[\"Role_1\",\"Role_2\",\"Role_3\"]}";
				
    UserInfo userInfo = gson.fromJson(jsonData, UserInfo.class);		
    System.out.println(userInfo.toString());
  }
  
  --- Result ------------------------------------------------------------------------------
  
  UserInfo [no=null, name=Aiden, roles=[Role_1, Role_2, Role_3]]

Gson 라이브러리는 이처럼 다양한 데이터 변환 작업을 지원하며, 그 사용법은 매우 직관적입니다. 이를 활용하면 JSON 데이터 처리에 관한 복잡한 작업을 간단하게 해결할 수 있어, 개발 효율성을 크게 향상시킬 수 있습니다.


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

 

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

안녕하세요! 오늘은 Java 개발자들에게 유용한 도구인 Gson Library에서 다루는 GsonBuilder에 대해 알아보겠습니다. 이 글에서는 Gson 객체 생성에 있어서 GsonBuilder를 이용한 다양한 옵션들을 활용하여

aday7.tistory.com

반응형

댓글


loading