요즘 Java와 관련된 웹 개발이나 API 개발에서 JSON 데이터 처리는 거의 필수적인 작업으로 자리 잡았습니다. 특히, 데이터 교환의 표준으로 자리 잡은 JSON 형식을 효과적으로 다루기 위한 도구가 필요하게 되었는데, 이번 글에서는 그 중에서도 Gson 라이브러리를 활용하여 객체를 JSON으로 변환하거나, JSON을 맵으로 변환하는 방법에 대해 알아보겠습니다.
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 옵션 정보 )
'IT 개발 이야기 > Java' 카테고리의 다른 글
Java로 구축하는 FTP 클라이언트: 파일 업로드 및 다운로드 최적화 (1) | 2023.12.07 |
---|---|
Java 17로 업데이트: 금융권에서 고려해야 할 사항과 코드 수정 가이드 (0) | 2023.04.28 |
Java 설치 및 환경 변수 설정 가이드 (0) | 2023.04.14 |
[Java] Gson Library - API 사용법( GsonBuilder 옵션 정보 ) (0) | 2023.03.06 |
[Java] 자바 문자열 공백 제거 및 Null 체크 - JDK 버전 별 사용 예제 (0) | 2023.03.02 |
[Java] RSA 공개키 암호화/복호화 예시( RSA 비대칭키 암호화 ) (0) | 2023.02.23 |
[Java] AES-256 암호화 시 java.security.InvalidKeyException: Illegal key size 에러 원인 및 해결 방법 (0) | 2023.02.14 |
[Java] SHA-256 패스워드 암호화 적용 예제( SHA-256 with Salt ) (0) | 2023.02.14 |
댓글