programing

ajax가 servlet에서 보낸 json을 읽는 방법

css3 2023. 9. 27. 18:05

ajax가 servlet에서 보낸 json을 읽는 방법

자바가 처음인데 이틀 동안 이 문제로 고생하다가 드디어 여기서 물어보기로 했습니다.

jQuery에서 보낸 데이터를 읽어서 서블릿에 사용하려고 합니다.

jQuery

var test = [
    {pv: 1000, bv: 2000, mp: 3000, cp: 5000},
    {pv: 2500, bv: 3500, mp: 2000, cp: 4444}
];

$.ajax({
    type: 'post',
    url: 'masterpaket',
    dataType: 'JSON',
    data: 'loadProds=1&'+test, //NB: request.getParameter("loadProds") only return 1, i need to read value of var test
    success: function(data) {

    },
    error: function(data) {
        alert('fail');
    }
});

서블릿

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
   if (request.getParameter("loadProds") != null) {
      //how do i can get the value of pv, bv, mp ,cp
   }
}

어떤 도움이라도 주신다면 정말 감사하겠습니다.

제대로 전송하지 않으면 서버에서 구문 분석할 수 없습니다.

$.ajax({
    type: 'get', // it's easier to read GET request parameters
    url: 'masterpaket',
    dataType: 'JSON',
    data: { 
      loadProds: 1,
      test: JSON.stringify(test) // look here!
    },
    success: function(data) {

    },
    error: function(data) {
        alert('fail');
    }
});

사용해야 합니다.JSON.stringify자바스크립트 객체를 JSON 문자열로 전송합니다.

그리고 서버에서:

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

당신은 파싱할 수 있습니다.json손으로 끈을 묶거나, 도서관을 이용하거나(gson을 추천합니다).

데이터를 서블릿에 파싱하려면 JSON 파서를 사용해야 합니다.

import org.json.simple.JSONObject;


// this parses the json
JSONObject jObj = new JSONObject(request.getParameter("loadProds")); 
Iterator it = jObj.keys(); //gets all the keys

while(it.hasNext())
{
    String key = it.next(); // get key
    Object o = jObj.get(key); // get value
    System.out.println(key + " : " +  o); // print the key and value
}

json을 구문 분석하려면 json 라이브러리(예: 잭슨)가 필요합니다.

org.json 가져오기를 사용합니다.import org.json.simple 대신 JSONObject.JSONO Object가 저를 위해 성공했습니다.

Java의 ':', '[', ']'와 같은 문자를 포함하는 문자열에서 Json 개체를 만드는 방법을 참조하십시오.

언급URL : https://stackoverflow.com/questions/19568142/how-to-read-json-sent-by-ajax-in-servlet