Подтвердить что ты не робот

Как читать json, посланный ajax в сервлете

Я новичок в java, и я борюсь с этой проблемой в течение 2 дней и, наконец, решил спросить здесь.

Я пытаюсь прочитать данные, отправленные 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
   }
}

Я очень ценю любую помощь, которую вы можете предоставить.

4b9b3361

Ответ 1

Вы не сможете разобрать его на сервере, если вы не отправите его правильно:

$.ajax({
    type: 'get', // it 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 для отправки объекта JavaScript в виде строки JSON.

А затем на сервере:

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

Вы можете разбирать строку json вручную или использовать любую библиотеку (я бы рекомендовал gson).

Ответ 2

Вам нужно будет использовать парсер JSON для анализа данных в Servlet

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 (например, Jackson) для анализа json

Ответ 3

Чтение и запись данных JSON с использованием jackson API следующим образом:

    publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException{
// This will store all received articles
List<Article> articles = new LinkedList<Article>();
 if (request.getParameter("loadProds") != null) {
    // 1. get received JSON data from request
    BufferedReader br = new BufferedReader(new  InputStreamReader(request.getInputStream()));
    String json = "";
    if(br != null){
        json = br.readLine();
    }

    // 2. initiate jackson mapper
    ObjectMapper mapper = new ObjectMapper();

    // 3. Convert received JSON to Article
    Article article = mapper.readValue(json, Article.class);

    // 4. Set response type to JSON
    response.setContentType("application/json");            

    // 5. Add article to List<Article>
    articles.add(article);

    // 6. Send List<Article> as JSON to client
    mapper.writeValue(response.getOutputStream(), articles);
   }
}