빵구의 개발 메꾸기

Gson 라이브러리 활용 본문

BACK-END/JAVA

Gson 라이브러리 활용

bkjo94 2022. 5. 30. 23:51

Object를 String 형태의 JSON으로 변환하거나 반대로 String 형태의 JSON을 Object로 변환해서 사용해야 하는 경우가

많은데 Gson 라이브러리를 활용하는 방법에 대해 알아보자.

 

 

 

<Gson 라이브러리 추가>

① maven repository 사이트에서 gson 라이브러리에 대해 gradle 탭에 있는 내용을 build.gradle 파일의

    dependencies에 종속성을 추가해주도록 한다.

 

 

 

<Object String 형태의 JSON 또는 String 형태의 JSON Object 변환>

① Gson 객체 생성 시 두 가지 방법이 있다.

② Gson을 활용하기 위해 User와 Animal의 Object들에 대해 property들을 set 해준다.

③ User의 Object를 String 형태의 JSON으로 변환해준다.

④ {"name":"bkjo","address":"daejeon","animals":[{"name":"dog","isWalking":true},{"name":"fish","isWalking":false}, {"name":"cat","isWalking":true}]}

String 형태의 JSON을 User의 Object로 변환해준다.

⑥ User(name=bkjo, address=daejeon, animals= [Animal(name=dog, isWalking=true),

Animal(name=fish, isWalking=false), Animal(name=cat, isWalking=true)], testProperty1=null, testProperty2=null, testProperty3=null)

 

 

 

<List JsonArray 변환>

① List 타입의 animals를 JsonArray 타입으로 변환해준다.

② [{"name":"dog","isWalking":true},{"name":"fish","isWalking":false},{"name":"cat","isWalking":true}]

 

 

 

<JsonArray에서 JsonElement의 key값에 대한 타입 별 value 꺼내기>

① JsonElement의 name은 String 타입이므로 getAsString메서드를 호출한다.
JsonElement의 isWalking은 boolean 타입이므로 getAsBoolean메서드를 호출한다.

 

 

 

<Map  String 형태의 JSON 또는 String 형태의 JSON  Map 변환>

String 형태의 JSON을 Map으로 변환해준다.

② {name=bkjo, address=daejeon, animals=[{name=dog, isWalking=true}, {name=fish, isWalking=false},

{name=cat, isWalking=true}]}

Map을 String 형태의 JSON으로 변환해준다.

④ {"name":"bkjo","address":"daejeon","animals":[{"name":"dog","isWalking":true},{"name":"fish","isWalking":false},{"name":"cat","isWalking":true}]}

 

 

 

<String 형태의 JSON을 예쁘게 출력하기>

setPrettyPrinting 메서드를 호출하여 Gson 객체를 생성한다.

② 다음과 같이 String 형태의 JSON을 예쁘게 출력해준다.

 

 

 

<Object의 null인 property에 대해 String 형태의 JSON 변환 시 제외>

일반적인 Gson 객체를 생성하여 Object를 String 형태의 JSON으로 변환시키는 경우는 null인 property는 제외한다.

② {"name":"bkjo","animals":[{"name":"dog","isWalking":true},{"name":"fish","isWalking":false},

     {"name":"cat","isWalking":true}]}

③ serializeNulls 메서드를 호출하여 Gson 객체를 생성하고 Object를 String 형태의 JSON으로 변환시키는 경우는

     null인 property는 포함한다.

④ {"name":"bkjo","address":null,"animals":[{"name":"dog","isWalking":true},{"name":"fish","isWalking":false},

{"name":"cat","isWalking":true}],"testProperty2":null,"tp3":null}

 

 

 

<Object String 형태의 JSON 변환 시 Object의 특정 property는 제외>

Object의 property에 transient를 붙이게 되면 String 형태의 JSON 변환 시 제외가 된다.

② testProperty1 property에 대해 값을 set을 해도  String 형태의 JSON 데이터에는 포함되지 않는다.

③ {"name":"bkjo","address":"daejeon","animals":[{"name":"dog","isWalking":true},{"name":"fish","isWalking":false},{"name":"cat","isWalking":true}]}

 

Comments