web-dev-qa-db-fra.com

Comment lire json envoyé par ajax dans servlet

Je suis nouveau à Java et je lutte avec ce problème depuis 2 jours et j'ai finalement décidé de poser la question ici.

J'essaie de lire les données envoyées par jQuery afin de pouvoir les utiliser dans mon 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
   }
}

J'apprécie vraiment toute aide que vous pouvez fournir.

24
Yosua Sofyan

Vous ne pourrez pas l'analyser sur le serveur si vous ne l'envoyez pas correctement:

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

Vous devez utiliser JSON.stringify pour envoyer votre objet JavaScript sous forme de chaîne JSON.

Et puis sur le serveur:

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

Vous pouvez analyser la chaîne json à la main ou en utilisant n’importe quelle bibliothèque (je recommanderais gson ).

25
siledh

Vous devrez utiliser l’analyseur JSON pour analyser les données dans le 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
}

Vous aurez besoin d’une bibliothèque json (par exemple Jackson) pour analyser le json

5
Rakesh Soni

Utiliser org.json.JSONObject au lieu de import org.json.simple.JSONObject a été efficace.

Voir Comment créer un objet Json à partir d'une chaîne contenant des caractères tels que ':', '[' et ']' en Java .

0
hlopezvg