22.08.19 - [ WAS ] Ajax - Json 활용해서 응답하기 ( feat. Gson )
-- Index --
1. JSON 이란? | 2. Gson | 3. toJson() |
JSON 폼 문자열 { key : value } |
라이브러리 toJson() |
객체보내기 리스트보내기 객체안에 객체보내기 |
1. JSON 활용해서 객체를 문자열로 만들어서 응답하기
1-1 : JSON 이란?
- JavaSctipy Object Notation
- json은 그냥 문자열이다.
- 근데 그냥 문자열이 아니라 – javascript 객체 문법 { ket: value } 형식으로 만들어진 문자열
- 네트워크 전송은 문자열로만 이루어진다.
1-2 : JSON 라이브러리를 사용하지 않고 ajax 응답 결과로 객체를 전달하려면?
# 서블릿 쪽에서 클라이언트 쪽으로 객체를 보낼 때 #
# 라이브러리 사용안하고 보내려면 이런 작업 필요 #
1-3 : JSON을 사용하면 얻는 이점은?
#1. JSON 타입의 문자열로 변환하는 작업을 쉽게 처리 가능
- 객체를 응답해주기 위해 위의 작업처럼 -
- 번거롭게 { key : value } 형태의 문자열로 바꿔주는 작업을 자동으로 해준다.
#2. 클라이언트쪽에서 JS객체로 바로 사용 가능하다.
- 이렇게 JSON 타입으로 자동 변환하여 보내주면 -
- 응답을 받는 쪽 = CLIENT 쪽에서는 parse() 작업만을 통해 이 문자열을 JS 객체로 바로 사용 가능하게 된다.
무슨 이야기냐면
- json 폼 { key: value }에 맞춰서 문자열을 보내기만 하면(응답을 보내주면)
- javaScript 에서는 이 문자열을 객체로 바로 사용할 수 있다는 이야기!
즉, 클라이언트 쪽에서의 작업
- 응답받은 문자열 잘라서 객체로 만드는 작업 = { 키 : 밸류 } 형식으로 만들어주어야 했던 작업을
- JSON을 통해 보내주면 - 쉽게 처리할 수 있도록 해준다는 의미!
- JSONparser 가 자동으로 문자열 --> object로 변환해주는 것!
1-4 : 응답받는 쪽 ( 클라이언트쪽 )에서 2가지 경우로 처리해보기
- #1 - 응답받은 결과(key:value형식으로 만들어 준 문자열)를 그대로 출력해보기
- #2 - 응답받은 결과(key:value형식으로 만들어 준 문자열)를 JSON.parse()해서 출력해보기
클라이언트 쪽에서는 JSON.parse() 해주면
응답받은 문자열이
{ key : value } 형식에 맞다면
JSON 타입의 문자열이 맞다면
JSON.parse() 메서드 호출만으로 쉽게
자동으로 자바스크립트 객체로 만들어 주는구나
체크 완료
2. Gson 이란?
2-1 : Gson 라이브러리 사용하는 이유?
- 서블릿 쪽에서 ajax로 객체를 응답 보낼 때 { key : value } 형식으로 보내야 하는데 그 작업을 쉽게 하기 위해서 사용
- 응답 보내는 쪽 ( 서버쪽 )에서 보다 쉽게 작업하기 위해서 사용
- ajax에서 JASON.parse() 를 활용하여 문자열을 객체로 만들기 위해서는
- 응답을 보내는 쪽 - 서블릿 쪽에서는 - { key: value } 형식으로 문자열을 전달하여야 한다.
- { key : value } 형식을 맞춰서 응답을 보내주기 위해서
- - 위에서 보았듯이 일일이 out.write( " " )해서 보내주어야 했었다.
- 너무 힘들기도 하고, 번거롭기도 하고, 오류 가능성도 높아진다.
- 이 작업을 쉽게 할 수 있도록 만들어 놓은 jar 파일 사용할 것이다.
- 누가 만든 거 사용할까요?
- 철수/영희 꺼 말고 – 구글이 만들어준 코드로 사용해보자
2-2 : Gson 라이브러리 사용 준비
2-3 : Gson 어떤 메서드를 사용해야 할까?
- 라이브러리에 있는 클래스 이용해서 gson객체 생성한 후
- 객체 안에 있는 메서드 활용해서 작업할 것이다.
이중에서도 우리가 사용할 메서드는
우리가 필요한 것은 parseVo 메서드이다.
( 이름은 다르겠지만 parse 해주는 기능 가진 메서드)
.toJson( ) 메서드 사용
3. Gson - .toJson( ); 메서드 사용해보기
3-1 : 객체 보내기
- 객체 vo 를 .toJson() 메서드의 파라미터로 넣어주고 ------ .toJson(vo)
- 그 결과 값을 String 변수에 담아서 ------ String jsonStr
- 문자열을 응답해주면 된다. ------ out.write(jsonStr)
- 이렇게 응답된 문자열을 클라이언트 쪽 ( ajax ) 에서 JSON.parse(jsonStr) 해주면 객체로 바로 생성됨
# 2번 과정에서 vo객체가 --> { key : value } 형식으로 = JSON타입으로 바뀌어서 문자열로 반환된다 #
즉! 객체를 응답 보내기 위해서 - 아래의 작업을 해야 하는데
1번 작업을 수월하게 하기 위해서
- 라이브러리와 메서드를 사용한 건데 – 내가 만들긴 복잡하니까 – 남이 만든 거 사용
- Gson 객체의 toJson() 메서드 사용 – 객체를 JSON타입의 문자열로 만들어주고
- String 문자열을 클라이언트에게 전달
2번 작업 체크
- 원래는 응답받은 문자열을 잘라서 key, value 분리한 다음
- 객체로 만들어주는 작업 = { key : value } 형태로 만들어주는 작업이 필요했는데
- 1번의 작업으로 - JSON 타입으로 응답받은 문자열은
- JSONparser 라는 애를 이용하여 JSONparser.parse() 해주면
- 원래 복잡하고 귀찮은 작업 필요 없이 JS 객체로 바로 사용 가능하게 된다!
3-2 : 리스트 보내기
- #1. 테스트할 리스트 생성하고 객체 담아주기 ( 10개 )
- #2. toJson(list) 로 보내고 잘 갔나 확인
출력 확인
3-3 : 객체 안에 객체 보내기
- #1. 객체 안에 객체 (클래스)준비하기
- #2. 이 객체를 포함하고 있는 객체(클래스) 세팅
이제 멤버vo객체는 scroeVo객체 포함하고 있는 상태
- #3. 객체 안에 객체 보내보기
list [ ] 안에 객체 { } 10개가 있고
객체 { } 안에 객체 { } 가 있다.
list에 있는 - 객체 0 에 - score 객체가 들어있다.