GSON

ayleen·2021년 12월 20일
0

GSON

JSON데이터를 java객체로 변환하거나, java객체를 JSON데이터로 포맷할 수 있도록 해주는 오픈소스 자바 라이브러리
JSON -> (java)JSON Object or JSON Array
(java) Class, ArrayList -> JSON






여러가지 버전들 중에 사용빈도가 가장 높은 버전을 사용하는 것이 좋다.




이클립스에서 드래그 앤 드롭으로 설치해주었다.




실습

ArrayList로 담은 정보를 GSON을 이용하여 JSON으로 가져와서 사용하기



<button onclick="dataLoad()">데이터 가져오기</button>
<table border="1">
	<thead>
		<tr>
			<td>이메일</td>
			<td>전화번호</td>
			<td>주소</td>
		</tr>
	</thead>
	<tbody id="tbody"></tbody>
</table>

▲ 클릭시 dataLoad()함수를 실행하는 버튼태그, table안에 출력해주기 위해 table 태그를 열어주고 컬럼을 thead에 입력해줌. 데이터를 가져오기 위한 tbody태그를 만들어주고 id를 tbody로 지정해줌.



<script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
	function dataLoad(){
		$.ajax({
			url : "ex02Gson",	
			type : "get", 
			dataType: 'json', 
			success : function(res){
				console.log(res)
					
				$('#tbody').html('');	
				for(let i = 0; i < res.length; i++){
					let table = "";
					table += '<tr>';
					table += '<td>' + res[i].email + '</td>';
					table += '<td>' + res[i].tel + '</td>'; 	
					table += '<td>' + res[i].address + '</td>'; 
					table += '</tr>';
				$("#tbody").append(table);
				}
			},
			error : function(){
				alert("요청실패");
			}
		});
	}
</script>

▲ json을 사용하기 위해 jquery를 연결해주고 버튼 클릭시 동작할 dataLoad()함수를 만들어 준다. 데이터를 가져오기만 하고 보낼 데이터는 없기 때문에 data속성은 지워주고 json타입으로 가져올 것이기 때문에 dataType을 json으로 지정해준다. res로 받아온 데이터를 table변수에 누적시켜서 id가 tbody인 태그 안에 추가해준다.
▲ $('#tbody').html(''); → 실행 후 버튼을 계속 누르면 같은 데이터가 아래로 계속 출력되기 때문에 버튼을 계속 눌러도 같은 정보가 반복해서 나오지 않게 하기 위해서 태그 안의 내용을 초기화해줌.



memberDTO member1 = new memberDTO("Stella", "010-1111-1111", "서울");
memberDTO member2 = new memberDTO("Sarah", "010-2222-2222", "대전");
memberDTO member3 = new memberDTO("Ayleen", "010-3333-3333", "대구");
memberDTO member4 = new memberDTO("Kyle", "010-1212-1212", "부산");
		
ArrayList<memberDTO> list = new ArrayList<memberDTO>();
		
list.add(member1);
list.add(member2);
list.add(member3);
list.add(member4);

▲ 'ex02Gson' 파일에 보낼 데이터를 입력해서 ArrayList에 담아준다.



Gson gson = new Gson();
String json = gson.toJson(list);
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.print(json);

▲ GSON을 이용하여 ArrayList를 JSON으로 사용할 수 있도록 GSON 객체를 생성해준다. Gson의 toJson 메서드를 사용하여 ArrayList를 String 타입의 json변수안에 담아준다. PrintWriter객체를 사용하여 print로 json에 담긴 데이터를 보내준다.



결과



▲ 버튼을 클릭하면 ArrayList로 작성해주었던 데이터가 테이블안에 담겨서 출력된다. 출력하는 테이블 안의 내용을 초기화하는 코드를 작성해주었기 때문에 버튼을 계속 눌러도 같은 정보들이 아래로 계속 추가되지 않는다.





profile
asdf

6개의 댓글

comment-user-thumbnail
2021년 12월 20일
  1. 제이슨의 형태는 2가지와 닮았다 그 2가지는 무엇인가?
  2. response 인코딩 방법 2가지 / 그 2가지중에 ajax에 더 적합한것은?
1개의 답글
comment-user-thumbnail
2021년 12월 21일
  1. 정답은 파이썬의 딕셔너리와 자바스크립트의 객체입니다
    자바스크립트의 객체 형태 : { key:value } -- 제 필기에 더 자세히 나와 있을겁니다
  • 자바의 ArrayList는 배열과 비슷합니다
    ex) [ dto1, dto2, dto3 ]
  1. ajax 사용시
    response.setCharacterEncoding("utf-8"); 이게 더 적합합니다.
1개의 답글