[Java] JSP - JSON 데이터 주고 받기 - JSONParser



json-simple 라이브러리를 이용하여

Android - JSP - JAVA

JSON 데이터 처리하는 방법입니다.


Step1 . JSON 데이터 생성 (Android)

JSONObject sendObject = new JSONObject();
JSONArray sendArray = new JSONArray();
// 각 정보마다 Object 로 만들어 Array 에 담는 반복문
try {
    for(int i = 0; i < 10; i++ ){
        JSONObject informationObject = new JSONObject();
        informationObject.put("name","Charlie"+i);
        informationObject.put("number",i+1);

        sendArray.put(informationObject);
    }
    sendObject.put("list",sendArray);
} catch (JSONException e) {
    e.printStackTrace();
}

실제 정보가 담겨있는 JSONObject를 JSONArray 에 담아주고

담긴 Array를 다시 JSONObject에 담아줍니다.

그렇게 되면 데이터 형식은 아래와 같습니다.

{ “list”
{ [ “name”:“charlie0” , “number”:“0” ] , [ “name”:“charlie1” , “number”:“1” ] , [ “name”:“charlie2” , “number”:“2” ] , … } }

이렇게 생성된 JSONObject 를 다양한 방법으로 JSP에 전달해주면됩니다.

저의 경우에는 HttpURLConnection 를 이용해서 String 형식으로 전송했습니다.

 "json="+sendObject.toString()

제가 만든 요청 Parameter 입니다.

요청 URL 은 서버의 jsp 파일로 가도록 하였습니다.


Step2 . JSP 에서 데이터 받기 (JSP)

init.Manage 는 java 파일 패키지 명입니다.

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

<%@ page import="init.Manage"%>

<%
	request.setCharacterEncoding("UTF-8");

	Manage manage = Manage.getInstance();

	String json = request.getParameter("json");

	String result = manage.method(json);

	out.print(result);
%>

String으로 날린 데이터를 request 객체에서 post형식으로 받아줍니다.

실제로 JSON 데이터를 처리하는 부분은 java 에서 진행할 것이기 때문에

받은 데이터를 java 메소드에 매개변수로 전달만 해줍니다.


Step3 . JSON 데이터 처리하기 (Java)

public String method(String data){

	String result = "";

	try {
		JSONParser jsonParser = new JSONParser();
		JSONObject jsonObject = (JSONObject) jsonParser.parse(data);
		JSONArray jsonArray = (JSONArray) jsonObject.get("list");

		for(int i = 0; i < jsonArray.size(); i++ ){
			JSONObject jsonObject = (JSONObject) jsonArray.get(i);
			String name = jsonObject.get("name").toString();
			String number = jsonObject.get("number").toString();

            //Do something..
        }
		result = "ok";
	} catch (Exception e) {
		result = "fail";
}
return result;
}

Android 에서 JSON 데이터를 만든 순서대로 다시 풀어주면 됩니다.

JSONObject { JSONArray ( JSONObjects…) }

이런 형태의 JSONObject를 역순으로 풀어줍니다.

JSONObject >> JSONArray >> JSONObject

여기에서 사용하는 가장 중요한 부분은

JSONParser 입니다.

String 으로 되어 있는 데이터를 JSON 형태로 파싱 해주는 parse 메소드를 이용하여 JSONObject를 만듭니다.

그 이후는 만든 순서대로 다시 가져오는 부분입니다.



[JSON 관련 포스팅]

  1. [안드로이드] JSON 데이터 주고 받기