2013-10-24 3 views
24

Ich bin neu in Java und ich mit diesem Problem für 2 Tage kämpfen und schließlich beschlossen, hier zu fragen.Wie zu lesen JSON von Ajax in Servlet gesendet

Ich versuche, so gesendete Daten von jQuery lesen ich es in meinem Servlet

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'); 
    } 
}); 

Servlets

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

ich wirklich zu schätzen, bieten können Sie Hilfe nutzen können.

+0

Ich weiß Javascript nicht gut genug. Wie wird der 'var'' test' serialisiert? –

Antwort

25

Sie es auf dem Server nicht in der Lage zu analysieren, wenn Sie es richtig an:

Sie müssen JSON.stringify verwenden, um Ihr JavaScript-Objekt als JSON-Zeichenfolge zu senden.

Und dann auf dem Server:

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

Sie können die json Zeichenfolge von Hand analysieren, oder jede Bibliothek (Ich würde empfehlen, gson).

5

Sie den JSON-Parser verwenden, um die Daten in die 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 
} 

Sie eine json Bibliothek müssen analysieren (zB Jackson) JSON-

2

lesen zu analysieren und JSON-Daten schreiben mit jackson API wie folgt:

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

Quelle: http://hmkcode.com/java-servlet-send-receive-json-using-jquery-ajax/ – ruhong

Verwandte Themen