wake-up-neo.net

Wie liest man den von Ajax gesendeten Json im Servlet?

Ich bin neu in Java und kämpfe 2 Tage lang mit diesem Problem und entschied mich schließlich, hier zu fragen.

Ich versuche, von jQuery gesendete Daten zu lesen, damit ich sie in meinem Servlet verwenden kann

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

Ich freue mich über jede Hilfe, die Sie leisten können.

24
Yosua Sofyan

Sie können es nicht auf dem Server analysieren, wenn Sie es nicht ordnungsgemäß senden:

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

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

Und dann auf dem Server:

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

Sie können den String json von Hand oder mit einer beliebigen Bibliothek analysieren (ich würde gson empfehlen).

25
siledh

Sie müssen den JSON-Parser verwenden, um die Daten in das Servlet zu parsen

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 benötigen eine Json-Bibliothek (z. B. Jackson), um den Json zu analysieren

5
Rakesh Soni

Die Verwendung des Imports org.json.JSONObject anstelle von import org.json.simple.JSONObject war für mich der Trick.

Siehe So erstellen Sie ein Json-Objekt aus einem String mit Zeichen wie ':', '[' und ']' in Java .

0
hlopezvg