json Data 활용

메타플랫폼대표
|2024. 7. 9. 10:19
반응형

JSON 작업파일(JSONTest)

 

GitHub - chaSunil/FirstProject: 1차 프로젝트

1차 프로젝트. Contribute to chaSunil/FirstProject development by creating an account on GitHub.

github.com

 

 

제이슨 타입으로 데이터 출력하기

json-20240303.jar
0.07MB

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

{
	"size": 3,
	"list":[
		{"name":"홍길동","age":31,"tel":"010-111-1234"},
		{"name":"이길동","age":32,"tel":"010-222-1234"},
		{"name":"삼길동","age":33,"tel":"010-333-1234"}
		]
}

 

 

 

 

 

Servlet 만들기 (json을 String, int, Array로 받기)

package action;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

import org.json.JSONArray;
import org.json.JSONObject;

/**
 * Servlet implementation class JSONParseAction
 */
@WebServlet("/json_parse.do")
public class JSONParseAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// {"name":"일길동","age":30,"hobby":["독서","낚시"]};
		String json_str = "";
		JSONObject json = new JSONObject("{\"name\":\"일길동\",\"age\":30,\"hobby\":[\"독서\",\"낚시\"]};");
		
		String name = json.getString("name");
		int age = json.getInt("age");
		
		// JSON 배열 읽어오기
		JSONArray hobbyArray = json.getJSONArray("hobby");
		for(int i=0; i<hobbyArray.length(); i++) { // i=0, i=1
			String hobby = hobbyArray.getString(i);
		}
		
		System.out.printf("이름:%s 나이:%d 취미:%s\n", name, age, hobbyArray);

		// Dispatcher형식으로 호출
		String forward_page = "result_json.jsp";
		RequestDispatcher disp = request.getRequestDispatcher(forward_page);
		disp.forward(request, response);

	}

}

 

 

 

http안에 작성한 json 데이터를 url 주소를 받아와서 값을 가져오기

package action;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class JSONParseAction
 */
@WebServlet("/json_parse.do")
public class JSONParseAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		List<PersonVo> p_list = new ArrayList<PersonVo>();
		
		try {
			String str_url = "http://localhost:8080/2024_0709_JSONTest/person.jsp";
			URL url = new URL(str_url);
			// 이용하는 이유: 요청시 헤더 정보 전달(인증키)
			URLConnection urlConn = url.openConnection();
			
			InputStream is = urlConn.getInputStream();
			
			// line 단위로 읽어온다.
			BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
			
			StringBuilder sb = new StringBuilder();
			
			while(true) {
				String data = br.readLine(); // line 단위로 읽어온다.
				if(data==null) break;
				
				sb.append(data+"\n");
			}
			
			// System.out.println(sb.toString());
			// JSON Parsing
			JSONObject json = new JSONObject(sb.toString());
			int size = json.getInt("size");
			JSONArray personArray = json.getJSONArray("list");
			
			for(int i = 0; i<personArray.length(); i++) {
				JSONObject person = personArray.getJSONObject(i);
				// person = {"name":"홍길동","age":31,"tel":"010-111-1234"}
				String name = person.getString("name");
				int age = person.getInt("age");
				String tel = person.getString("tel");
				
				PersonVo vo = new PersonVo(name, age, tel);
				p_list.add(vo);
			}
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		// request binding
		request.setAttribute("p_list", p_list);

		// Dispatcher형식으로 호출
		String forward_page = "result_json.jsp";
		RequestDispatcher disp = request.getRequestDispatcher(forward_page);
		disp.forward(request, response);

	}

}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<table border="1" align="center">
	<tr>
		<th>이름</th>
		<th>나이</th>
		<th>전화번호</th>
	</tr>
	<!-- for(PersonVo vo : p_list) -->
	<c:forEach var="vo" items="${ requestScope.p_list }">
	<tr>
		<td>${ vo.name }</td>
		<td>${ vo.age }</td>
		<td>${ vo.tel }</td>
	</tr>
	</c:forEach>
</table>

</body>
</html>

 

반응형

'데이터베이스↗' 카테고리의 다른 글

Mybatis library 설정과 사용  (0) 2024.07.10
json kakao open api 활용하기  (0) 2024.07.09
xml openApi bookSearch Ex  (0) 2024.07.08
xml openApi 이용하기  (0) 2024.07.08
xml로 데이터를 가져와서 parsing까지 하기  (0) 2024.07.08