Programing/JSON

Json 데이터 ajax 전송 java Controller에서 받기

리커니 2015. 10. 12.
반응형

 

Json 데이터 ajax 전송 java Controller에서 받기

 

jsp 에서 ajax 등을 활용하여 서버로 json 데이터를 보내야 할 경우가 있습니다.

이럴 때 서버에서 json 데이터를 받는 방법을 알아보도록 하죠.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var jsonStr = JSON.stringify(params); //params는 object
 
ajaxJsonHeader : function (url, params, func){
    $.ajaxSetup({
        headers: { "AJAX""true" }
    });
    $.ajax({
        url: url,
        type: 'POST',
        data: params,
        dataType : 'json',
        contentType : "application/json; charset=UTF-8",
        async: false,
        success: function(returnData){
            func(returnData);
        },
    });
});
cs

 

ajaxSetup과 contentType 을 잘 확인하시기 바랍니다.

 

[java]

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private String readJSONStringFromRequestBody(HttpServletRequest request){
    StringBuffer json = new StringBuffer();
    String line = null;
 
    try {
        BufferedReader reader = request.getReader();
        while((line = reader.readLine()) != null) {
            json.append(line);
        }
 
    }catch(Exception e) {
        System.out.println("Error reading JSON string: " + e.toString());
    }
    return json.toString();
}
cs

 

위의 코드를 json 데이터를 받아 사용할 곳에 추가합니다.

(위의 클래스는 json데이터를 String  으로 바꾸어 주는 역할을 한다. )

 

 

1
2
3
4
5
public String 클래스명(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
    Gson gson = new Gson();
    DataSet set = new DataSet();
    return gson.toJson(set);
}
cs

 

위의 readJSONStringFromRequestBody 클래스를 사용하여 request로 받은 json 데이터를 String 으로 치환합니다.

String json = readJSONStringFromRequestBody(request);

 

바꿔준 String 값을 제이슨 오브젝트에 넣어 제이슨 데이터로 가공합니다.

JSONObject jObj = new JSONObject(json);

 

한글화나 데이터가 빈값이 넘어간다면 아래의 값을 추가해 봅니다.

@RequestMapping(value="URL", produces="text/plain;Charset=UTF-8")
@ResponseBody

 

 

1
2
3
4
5
6
7
public String 클래스명(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
    Gson gson = new Gson();
    DataSet set = new DataSet();
    String json = readJSONStringFromRequestBody(request); 
    JSONObject jObj = new JSONObject(json);
    return gson.toJson(set);
}
cs

 

위와 같이 json 데이터를 request로 받아 원하는 가공을 하면 됩니다.

 

GSON을 사용할 경우 아래와 같이도 가능합니다.

 

1
2
3
4
5
6
7
8
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
.
.
.
String jsonStr = readJSONStringFromRequestBody(req);
JsonObject jo = (JsonObject)jsonParser.parse(jsonStr);
cs

 

반응형

댓글

💲 추천 글