1. Gson을 사용하는 이유
웹사이트는 ajax를 통해 클라이언트와 서버가 서로 요청과 응답을 한다. JSON Object 형태로 전송한 요청 정보를 컨트롤러에서 받아 여러가지 처리를 하고 응답 정보를 전송해주어야 한다. 이때 ajax는 응답 정보를 문자열 형태밖에 받지 못하기 때문에 컨트롤러에서는 맵이나 커맨드 객체를 JSON Object문자열로 만들어 전송해야 한다. 이런 상황에서 Gson을 사용하면 여러 가지 객체를 JSON Object 문자열로 만들 수 있다.
2. 스프링에서 Gson 사용하기
maven repo 가서 gson 검색
3. toJson, fromJson 메소드
기본 사용법
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());
4. DTO 객체를 JSON으로 보내기
@ResponseBody
@RequestMapping(value="/gson.do", method=RequestMethod.POST)
public String memberLoad(MemberDto memberDto, Model model) {
List<MemberDto> memberList = memberService.selectMemberList(memberDto);
Gson gson = new Gson();
HashMap<String, Object> map = new HashMap<String, Object>();
// key-value 형태로 맵에 저장
map.put("memberList", memberList);
// 맵을 JSON Object를 바꾸고 다시 문자열로 바꿈
String jsonString = gson.toJson(map);
return jsonString;
}
ajax
$.ajax({
url : "/gson.do",
type : "post",
success : function(data) {
var obj = JSON.parse(data);
console.log(obj.memberList[0].memberId);
},
error : function(errorThrown) {
alert(errorThrown);
}
});
출처
'spring' 카테고리의 다른 글
웹 어플리케이션 보안 (0) | 2020.10.04 |
---|---|
web.xml (0) | 2020.10.04 |
mybatis 연동 (0) | 2020.10.04 |
Spring Dispatcher (1) | 2020.10.04 |
스프링 빈이 등록되는 과정 (0) | 2020.10.04 |