2013-10-24 24 views
24

Sono nuovo a Java e ho faticato con questo problema per 2 giorni e alla fine ho deciso di chiedere qui.Come leggere json inviato da ajax in servlet

Sto cercando di leggere i dati inviati da jQuery così posso usarlo nella mia 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'); 
    } 
}); 

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

Apprezzo molto tutto l'aiuto che potete fornire.

+0

Non conosco il javascript abbastanza bene. Come serializza il 'var'' test'? –

risposta

25

non sarà in grado di analizzare sul server a meno che non lo si invia correttamente:

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

È necessario utilizzare JSON.stringify per inviare l'oggetto JavaScript come stringa JSON.

E poi sul server:

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

è possibile analizzare la stringa json a mano, o utilizzando qualsiasi libreria (consiglierei gson).

5

Si dovrà utilizzare il parser JSON per analizzare i dati nel 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 
} 

Avrete bisogno di una libreria JSON (ad es Jackson) per analizzare il JSON

2

leggere e scrivere dati JSON utilizzando Jackson API come segue:

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

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

Problemi correlati