오랜만에 자바 포스팅하나를 작성하러 돌아왔습니다.


이번에 소개드릴것은 구글의 GSON 입니다.


GSON은 자바 라이브러리중 하나인데, 자바 오브젝트를 쉽게 JSON으로 변환시켜주는 아주 간단하고 심플한 라이브러리 입니다.


주로 Simple-JSON이나, JACKSON등 많은 JSON관련 라이브러리가 있는데요.


이 중에서 제가 사용해본 자바 라이브러리에선 가장 간편하고 편하지 않나 싶습니다.


먼저 GitHub 주소를 첨부하도록 하겠습니다.


GitHub Google Gson 바로가기 


Gson is a Java library that can be used to convert Java Objects into their JSON representation.

(Gson은 Java 객체를 JSON 표현으로 변환하는 데 사용할 수 있는 Java 라이브러리 입니다.)


라고 안내하고있습니다.


Gson은 자바객체를 -> JSON으로, JSON을 -> 자바객체로도 쉽게 표현 및 변환이 가능합니다.


자 그럼, Gson샘플 코드에 대해 알아보도록 하겠습니다.



GSON을 알아보자!


Gson은 jar파일로 바로 프로젝트에 연결시켜서 사용 할 수도있지만 Maven 프로젝트나 Gradle 프로젝트에서도 바로 연결하여 사용 할 수 있습니다.


해당 안내는 위 GitHub에 있지만 아래 첨부하겠습니다.


Gradle:

dependencies {
  implementation 'com.google.code.gson:gson:2.8.6'
}

Maven:

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.6</version>
</dependency>

Jar:
Gson jar 다운로드 Maven Central. 


* eclipse-jee-2018-09-win32-x86_64

* gson 2.8.6




저는, Jar파일을 받아 프로젝트에 Add시켰습니다.

그럼 간단한 샘플을 시작해보도록 하겠습니다.



1. Map -> JSON, JSON -> Map 


1
2
3
4
5
6
7
8
9
10
11
12
13
Gson gsonObj = new Gson();
    
Map<StringString> inputMap = new HashMap<StringString>();
inputMap.put("name""makesomething");
inputMap.put("blog""https://web-inf.tistory.com");
        
// MAP -> JSON 예제
String jsonStr = gsonObj.toJson(inputMap);
System.out.println("MAP -> JSON 예제 : " + jsonStr);
        
// MAP -> JSON 예제
Map map = gsonObj.fromJson(jsonStr, Map.class);
System.out.println("JSON -> MAP 예제 : " + map.toString());
cs


Map에서 JSON은 Gson객체 선언후 toJson, JSON에서 Map은 객체 선언 후 fromJson입니다.

단 fromJson은 변환 할 타입(Class)을 확실이 잡아주어야 합니다.


List등, CustomClass도 JSON으로 변환이 가능하고, 자바 객체라면 모두 변환이 가능 합니다.



2. JsonObject 만들기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// JsonObject 생성
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name""makesomething");
jsonObject.addProperty("blog""http://web-inf.tistory.com");
jsonObject.addProperty("boolean"true);
jsonObject.addProperty("int"12345);
        
System.out.println("JsonObject 생성 : " + jsonObject.toString() + "\n");
 
// String 리턴
System.out.println("JsonObject name(String) : " + jsonObject.get("name").getAsString());
System.out.println("JsonObject blog(String) : " + jsonObject.get("blog").getAsString());
 
// boolean 리턴
System.out.println("JsonObject boolean(boolean) : " + jsonObject.get("boolean").getAsBoolean());
 
// int 리턴
System.out.println("JsonObject int(int) : " + jsonObject.get("int").getAsInt());

cs


Gson에서 JsonObject 만드는 방법 입니다.

간단하게, JsonObject객체를 선언한 후에, Map처럼 addProperty로 데이터를 넣어주면 됩니다.

하지만 addProperty는 자료형 타입별로 넣어 줄 수 있고, 다시 Object에서 자료를 꺼낼때도 타입별로 리턴 받을 수 있습니다.

(sys.out.println의 마지막 .get부분을 보시면 타입별로 리턴받는것을 확인 하실 수 있습니다.)



3. JsonArray 만들기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// JsonObject 생성
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name""makesomething");
jsonObject.addProperty("blog""http://web-inf.tistory.com");
jsonObject.addProperty("boolean"true);
jsonObject.addProperty("int"12345);
                
System.out.println("JsonObject 생성 : " + jsonObject.toString() + "\n");
        
// JsonArray 생성
JsonArray jsonArray = new JsonArray();
jsonArray.add(jsonObject);
        
System.out.println(jsonArray.toString());
    
// JsonArray 0번 index에있는 jsonObject의 name을 string으로 리턴
System.out.println(jsonArray.get(0).getAsJsonObject().get("name").getAsString());
cs


JsonObject를 응용하여 JsonArray를 생성해보았습니다.

JsonArray에 만들었던 JsonObject(JsonElement)를 넣고, JsonObject안에 있는 name데이터를 String으로 리턴받는 예제 입니다.


JsonArray에서 ADD시 사용할수있는 메소드 입니다.

자료형 별로 구분되어있고 JsonElement는 JSON요소 모두를 의미합니다. (JsonObject, JsonArray등)



3. Gson Parse Pretty


1
2
3
4
5
6
7
8
9
10
11
12
13
14
// JsonObject 생성
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name""makesomething");
jsonObject.addProperty("blog""http://web-inf.tistory.com");
jsonObject.addProperty("boolean"true);
jsonObject.addProperty("int"12345);
                
System.out.println("JsonObject 생성 : " + jsonObject.toString() + "\n");
        
// Parse Pretty
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonOutput = gson.toJson(jsonObject);
        
System.out.println(jsonOutput);
cs


마지막으로, GsonBuilder옵션입니다.

Builder옵션은 더 많은 종류와 설정 메소드들이 존재하지만 그 중에서 Json을 이쁘게 출력을 해주는 Pretty 옵션 예제 입니다.

Gson 객체를 선언 후 setPrettyPrinting으로 변환해주면 결과 값이 개행이 잘되어 나타납니다.




결과값입니다. 예쁘게 개행이 된 것을 확인 할 수 있습니다.



이렇게 Gson은 명확히, 자료형으로 데이터를 넣을수있고 리턴받을수있게 구현이 되어있습니다.

속도도 빠르며, 코드가 더욱더 깔끔해지며 JSON을 사용하기가 편리합니다.


다만 단점을 꼽자면, 코드가 조금 길어지는 느낌도 있습니다.


하지만, 개발자 입장에서 봤을때 한눈에 알아보기가 쉬운 장점이 있습니다. (저만 그럴수도있어요..)


저는 Gson을 만난 후 다른 Json라이브러리는 특수한 상황이 아니라면 Gson만 사용하네요.ㅎㅎ


이상으로, Gson 포스팅을 마치도록 하겠습니다.

감사합니다.


반응형

+ Recent posts