How to read complex JSON object from jQuery in Servlet request.getParameter -
i creating , sending json object jquery, cannot figure out how parse in ajax servlet using org.json.simple library.
my jquery code follows :
var jsonrooms = {"rooms":[]}; $('div#rooms span.group-item').each(function(index) { var $substr = $(this).text().split('('); var $name = $substr[0]; var $capacity = $substr[1].split(')')[0]; jsonrooms.rooms.push({"name":$name,"capacity":$capacity}); }); $.ajax({ type: "post", url: "parsesecondwizardasync", data: jsonrooms, success: function() { alert("entered success function"); window.location = "ctt-wizard-3.jsp"; } });
in servlet, when use request.getparameternames() , print out console parameter names rooms[0][key]
etcetera, cannot parse json array rooms in way. have tried parsing object returned request.getparameter("rooms")
or .getparametervalues("rooms")
variant, both return null value.
is there wrong way i'm formatting json data in jquery or there way parse json in servlet i'm missing?
ask more code, though servlet still pretty empty since cannot figure out how parse data.
the data
argument of $.ajax()
takes js object representing request parameter map. js object feed converted request parameters. since you're passing js object plain vanilla it, it's treated request parameter map. need access individual parameters request parameter name representation instead.
string name1 = request.getparameter("rooms[0][name]"); string capacity1 = request.getparameter("rooms[0][capacity]"); string name2 = request.getparameter("rooms[1][name]"); string capacity2 = request.getparameter("rooms[1][capacity]"); // ...
you can find them httpservletrequest#getparametermap()
method:
map<string, string[]> params = request.getparametermap(); // ...
you can dynamically collect params follows:
for (int = 0; < integer.max_value; i++) { string name = request.getparameter("rooms[" + + "][name]"); if (name == null) break; string capacity = request.getparameter("rooms[" + + "][capacity]"); // ... }
if intent pass real json object can use json parser break further down properties, have convert string
before sending using js/jquery , specify data
argument follows:
data: { "rooms": roomsasstring }
this way it's available json string request.getparameter("rooms")
can in turn parse using arbitrary json api.
unrelated concrete problem, don't use $
variable prefix in jquery non-jquery objects. makes code more confusing js/jquery experts. use real jquery objects, not plain vanilla strings or primitives.
var $foo = "foo"; // don't that. use var foo instead. var $foo = $("someselector"); // okay.
Comments
Post a Comment