본문 바로가기
웹 개발 언어/JavaScript

Gson 라이브러리

by 0725 2022. 4. 3.

Gson이란?

- JSON구조의 데이터를 Java의 객체로 변환해주는 자바 라이브러리

 

Gson 사용하기


실습하기

1. Webtoon 클래스를 작성하세요.(WebtoonDTO.java)

2. Webtoon객체 을 생성한 후 ArrayList에 저장 시켜주세요.(WebtoonDB.java)

3. 웹툰 정보를 출력하는 html을 만들어주세요.(웹툰정보출력.html)

 

▶ WebtoonDTO.java

public class WebtoonDTO {
	String writer;
	String title;
	String day;
	public WebtoonDTO(String writer, String title, String day) {
		super();
		this.writer = writer;
		this.title = title;
		this.day = day;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getDay() {
		return day;
	}
	public void setDay(String day) {
		this.day = day;
	}
}

WebtoonDB.java

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

@WebServlet("/WebDB")
public class WebDB extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 네이버 웹툰 서버 데이터베이스
		System.out.println("Come on~~");
		
		// 임의의 네이버 웹툰 정보 DB를 생성
		// 작가, 제목, 연재요일 -> 네이버 웹툰 정보!
		
		// 웹툰 3개의 객체 만들기
		WebtoonDTO w1 = new WebtoonDTO("전선욱", "프리드로우", "토요일");
		WebtoonDTO w2 = new WebtoonDTO("박용재", "갓오브하이스쿨", "금요일");
		WebtoonDTO w3 = new WebtoonDTO("영파카", "평범한 8반", "월요일");
		
		ArrayList<WebtoonDTO> webtoons = new ArrayList<>();
		webtoons.add(w1);
		webtoons.add(w2);
		webtoons.add(w3);
		
		// 데이터가 현재 주소값을 담고 있음
		// json 형태로 다시 만들어서 응답하기
		// Gson -> 데이터를 json 타입으로 바꿔주는 역할을 하는 객체
		// json -> key와 value로 이루어진 데이터 형식
		Gson gson = new Gson();
		
		// webtoons에 있는 데이터들이 json 타입으로 변환됨
		// key값이 자동으로 정해진다
		Object json = gson.toJson(webtoons);
		
		// 응답 전에 인코딩하기
		response.setContentType("text/plain; charset=utf-8");
		PrintWriter out = response.getWriter();
		out.print(json);
		
	}

}

▶ 웹툰정보출력.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="jquery-3.6.0.min.js"></script>
</head>
<body>
	<h1>웹툰 정보 출력</h1>
	<table id="start" border="1">
		<tr>
			<td>제목</td>
			<td>작가</td>
			<td>연재일</td>
		</tr>
	</table>
	
	<button>웹툰정보가져오기</button>
	
	<script type="text/javascript">
		
	$("button").on("click",function(){
		$.ajax({
			url:"WebDB",
			
			// ajax의 데이터타입 기본값 : 문자열
			// 넘겨받는 데이터는 json 형식으로 설정
			dataType: "json",
			
			success:function(result){
				alert("통신 성공")
				console.log(result);
				console.log(result[0].title);
				console.log(result.length);
				
				for(i =0;i<result.length;i++){
					$("#start").append("<tr>"+"<td>"+result[i].title+"</td>"+"<td>"+result[i].writer+"</td>"+"<td>"+result[i].day+"</td>"+"</tr>")
				}
			},
		
			error : function(){
				alert("통신 실패!")
			}
			
		})
	})
		
	</script>
</body>
</html>

실행화면

댓글