2013-10-24 4 views
24

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

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

Servlet

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 
    } 
} 

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

+0

Я не знаю javascript достаточно хорошо. Как это сериализовать 'var'' test'? –

ответ

25

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

$.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 для отправки объекта JavaScript в виде строки JSON.

А потом на сервере:

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

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

5

Вы должны будете использовать 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

2

Чтение и запись данных в формате JSON с использованием джексон 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); 
    } 
} 
+0

Источник: http://hmkcode.com/java-servlet-send-receive-json-using-jquery-ajax/ – ruhong

Смежные вопросы