본문 바로가기
JavaScript, jQuery, Java

Object, 배열 ajax 로 Java 에 넘기기 (String 을 JSONObject 로, JSONObject 를 Map 으로)

by 보리하늘 2017. 12. 21.
728x90
반응형

Object는 ajax 로 보낼때 형태를 변환해주어야 한다.


*** 데이터를 직렬화 시키기 : JSON.stringify("Object 배열 변수명")




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var data = {},
    A= [],
    B= [];
            
    for(var i=0; i<$('#frm [name = A]').length; i++){
                        
        A.push( $('#frm [name = A]').eq(i).val() );
        B.push( $('#frm [name = B]').eq(i).val() );
    }
                            
    data = {
                REP_YMD : $('#frm').find('#REP_YMD').val().replace(/-/gi, ''),
                REP_CDE : $('#frm').find('#REP_CDE').val(),
                SBJ_CDE : $('#frm').find('#SBJ_CDE').val(),
                REP_DES : $('#frm').find('#REP_DES').val(),
                OPR_NAM : $('#frm').find('#OPR_NAM').val()
              };
                    
    var jsonData = JSON.stringify(data);
    jQuery.ajaxSettings.traditional = true;
 
    $.ajax({
        type: 'get',
        dataType: 'json',
        data: {"jsonData" : jsonData, A : A, B : B},
        url: '/water/WTT_WUTL_HTProcWrite.do',
        success: function(json) {
            alert(json.resultMsg);
            BOOK.fn_close_window(frm.openerId.value);
            BOOK.fn_search_addInfoGrid("gridWutl");
        },
        error: function(error) {
            alert(error.errorMsg);
        }
    });
}
cs





*** 데이터를 넘길때

{"jsonData" : jsonData, A : A, B : B} 와 같이 여러 데이터도 넘길 수 있다.





*** Java 에서 다음과 같이 받으면 된다.

직렬화된 "jsonData" 를 String 형태로 받아 이것을 JSONObject 형태로 변환시켜준다.

사용 목적에 따라 이것을 다시 Map 형식으로 변환 할 수도 있다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import org.json.simple.JSONValue;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
String jsonStr = request.getParameter("jsonData");
 
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
 
Map<String, Object> result = (Map<String, Object>)JSONObject.toBean(jsonObject, java.util.HashMap.class);
 
 
String[] A = request.getParameterValues("A"),
        B = request.getParameterValues("B");
        
String action_flag = (String)result.get("action_flag");
cs




일반 문자열 배열이었던 A 와 B 는 request.getParameterValues() 로 받아 사용한다.


jsonObject 와 result 에 담긴 key 값들은  "keySet()" 함수를 통해 배열로 받을 수 있다.

* jsonObject.keySet()

* result.keySet()

728x90
반응형

댓글