금융에 대한 모든 것

Gson을 사용하는 이유

  웹사이트에서는 ajax 통해 클라이언트와 서버가 서로 요청과 응답을 합니다. JSON Object 형태로 전송한 요청 정보를 컨트롤러에서 받아 여러 가지 처리를 하고 나서 다시 응답 정보를 전송해주어야 합니다. 이때 ajax 응답 정보를 문자열 형태밖에 받지 못하기 때문에 컨트롤러에서는 맵이나 커맨드 객체를 JSON Object 문자열로 만들어 전송을 해야 합니다. 이런 상황에서 Gson 사용하면 여러 가지 객체를 JSON Object 문자열로 만들 있습니다.

 

스프링에서 Gson 사용하기

pom.xml

<!-- Gson -->
<dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.5</version>
</dependency>

 해당 코드를 붙여 넣기 합니다.

 

toJson, fromJson 메서드

 Gson 라이브러리의 메서드로, 객체를 JSON Object 문자열로 변환하고 JSON Object 다른 타입으로 변환할 있습니다.

 

기본 사용법

Gson gson = new Gson();

// Object를 JSON Object 문자열로 반환
gson.toJson(Object)

// JSON Object를 해당 타입으로 바꿈
gson.fromJson(jsonObject, Class);

 

결과

HashMap<String, Object> map = new HashMap<String, Object>();
JsonObject jsonObject = new JsonObject();

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

// 맵을 JSON Object 문자열로 바꿈
String jsonString = gson.toJson(map);

// JSON Object를 맵으로 바꿈
gson.fromJson(jsonObject, new HashMap<String, Object>().getClass()); 

 

VO 객체를 JSON으로 보내기

컨트롤러

@ResponseBody
@RequestMapping(value = "/url", method = RequestMethod.POST)
public String questLoad(QuestVO questVO, Model model) throws Exception {
                        
    List<QuestVO> questList = questService.selectQuestList(questVO);
                
    Gson gson = new Gson();
    HashMap<String, Object> map = new HashMap<String, Object>();
    
    // key-value 형태로 맵에 저장
    map.put("questList", questList);
   
   // 맵을 JSON Object를 바꾸고 다시 문자열로 바꿈
    String jsonString = gson.toJson(map);
                
    return jsonString;
}

JSON Object를 만들려면 프로퍼티가 있어야 하기 때문에 맵을 선언 해서 프로퍼티와 값을 넣어줍니다. 그다음 toJson 메서드를 이용해 맵을 JSON Object 문자열 형태로 바꾸어줍니다

 

ajax

$.ajax({
    url: "/url",
    type: "post",
    success: function(data) {                
        var obj = JSON.parse(data);
        
        /* obj = {"questList": ["questId": 1, "questTitle": "a"],
                               ["questId": 2, "questTitle": "b"]
                 }
         */       
        console.log(obj.questList[0].questId);
        // 1 출력
    },
    error: function(errorThrown) {
        alert(errorThrown);
    },
});

ajax로 요청하여 컨트롤러 메서드가 실행됩니다.  메서드가 반환한 jsonString success 콜백 함수의 파라미터인 data 들어갑니다. 그리고 JSON.parse JSON Object 변환시켜주면 해당 프로퍼티에 접근할  있게 됩니다.

반응형