본문 바로가기
BackEnd/Spring

[SPRING] List TO JSON / 원하는 데이터만 key/value로담고 싶을때 / GSON 라이브러리

by 성은2 2022. 7. 14.

Java에서 JSON 데이터로 작업하기 위해서는 다양한 라이브러리가 있다.

보편적인 라이브러리는 다음과 같다.

 

  • Jackson
  • Gson
  • json-io
  • Genson

 

이 중에서 Gson 라이브러리를 사용해서 JSON을 JAVA에서 다루는 방법을 정리했다.

 

 

 

Gson?

Gson은 Java에서 Json을 파싱하고, 생성하기 위해 사용되는 구글에서 개발한 오픈소스.

Java Object를 Json 문자열로 변환할 수 있고, Json 문자열을 Java Object로 변환할 수 있다.

Gson은 Object mapping 방식 말고도, Json자체를 JsonObject라는 class로 만들어서 Json내에 object, 값, 배열,null 을 가져오거나, 추가, 삭제 등을 할 수 있다.

 

 

 

dependency 추가

* 최신버전은 Maven https://mvnrepository.com/artifact/com.google.code.gson/gson

 

 

1. 리스트를 리폼하지 않고, 전체를 JSON형태로 변환

DB에서 조회해온 리스트 데이터가 있다.

List<CommonDto> getTestList = commonService.getTestList(paramDto);

 

이를 Gson 라이브러리를 사용해 JSON 으로 변환하는 코드

- Object -> Json 변환 : toJson

// Gson 객체 생성
Gson gson = new Gson();

// Json 문자열로 변환
String jString = gson.toJson(getTestList);

 

- Json 문자열 -> Object 변환 : fromJson

import com.google.gson.Gson;
 
public class JsonToObject {
    public static void main(String[] args) {
 
        // Json 문자열
        String jsonStr = "{\"id\":1,\"name\":\"Anna\"}";

        // Gson 객체 생성
        Gson gson = new Gson();

        // Json 문자열 -> Map 객체
        Map<String, Object> tempMap = gson.fromJson(jsonStr, Map.class);

        // Map 객체 toString() 출력
        System.out.println(tempMap); // {id=1.0, name=Anna}
    }
}

 

 

 

- 응용 : dto에 담아서 DB에 JSON 형태의 스트링으로 저장가능

testDto.setCompanyId(jString);

 

 

 

 

2. 리스트를 리폼해서, 원하는 데이터만 JSON 으로 담고 싶을때 

 

* JsonArray를 만든다.

JsonArray ja = new JsonArray();

* 반복문을 통해 jsonObject에 리스트에서 원하는 값만 추출해 담아서, JsonArray에 add한다.

for(int i =0; i<getTestList .size(); i++) {

   JsonObject jo = new JsonObject();
   
   jo.addProperty("customerId", getTestList .get(i).getCompanyId());
   jo.addProperty("customerName", getTestList .get(i).getCompanyName());
   
   ja.add(jo);
}

 

*  가공한 JSON형태의 데이터를  String 형태로 변환해서

String resultString = ja.toString();

 

* dto에 담아 DB에 저장하고 싶을 때

paramDto.setCompanyId(resultString);

 

 

 

3. json 형태의 String 데이터에서 원하는값만 뽑아 사용하고 싶을때

기본적으로 Json String을 JsonObject로 받기 위해서는 JsonParser.parseString() method를 이용한다.

(해당 method는 static이므로, 걍 사용하면 된다.)

참고로 parseString의 return 은 JsonElement 이므로 변환해야 JsonObject로 받을 수 있다.

 

JsonObject jsonObj = (JsonObject) JsonParser.parseString(json);

 

 

 

 

Gson Json 관련 도움이 된 티스토리..

https://ijeee.tistory.com/27

 

Gson에서 Json 구성 요소 5가지 (JsonElemnt/JsonObject/JsonPrimitive/JsonArray/JsonNull)

https://github.com/jeng832/blog-example/tree/master/gson2 jeng832/blog-example Contribute to jeng832/blog-example development by creating an account on GitHub. github.com Gson은 Object mapping 방식..

ijeee.tistory.com