java - Getting stackoverflow exception when use gson class -
in servlet within method dopost have created code showed under here. should simple. object according string passed user request , pass object response request. unfortunately exception
java.lang.nullpointerexception @ it.volaconnoi.servlet.checkinservlet.dopost(checkinservlet.java:68) @ javax.servlet.http.httpservlet.service(httpservlet.java:707) @ javax.servlet.http.httpservlet.service(httpservlet.java:790) @ org.apache.catalina.core.standardwrapper.service(standardwrapper.java:1682) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:318) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:160) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:734) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:673) @ com.sun.enterprise.web.webpipeline.invoke(webpipeline.java:99) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:174) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:357)
i'm totally sure reserv object not empty entity fetched db . know why problem?
code updated
@override protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { string reserv_id = request.getparameter("reserv_id"); reservation reserv = reservationfacade.getvalidreservation(reserv_id.touppercase()); gson gson = new gsonbuilder().registertypeadapter(reservation.class, new reservationserializer()) .create(); response.setcontenttype("application/json"); printwriter out = response.getwriter(); out.print(gson.tojson(reserv)); out.flush(); }
the class i'm trying parse pojo objec
public class reservation implements serializable { private string id_reservation; private int passengers; private int luggages; private float price; private date date_reservation; private boolean cancelled; private usercredential user; private route route; ... getter , setter
jquery call
$.post("checkin", {reserv_id :reserv_id}, function(data){ if(data.success) { $("#result_check_in").html(""); $("#result_check_in").append("<table class='show_reservations'>"); $("#result_check_in").append("<tr>"); $("#result_check_in").append("<td>" + data.reserv_client.id + "<td>"); $("#result_check_in").append("<td>" + data.reserv_client.user.name + "<td>"); $("#result_check_in").append("<td>" + data.reserv_client.user.surname + "<td>"); $("#result_check_in").append("</tr>"); $("#result_check_in").append("</table>"); } else { $("#result_check_in").append("<p>non รจ stata trovata alcuna prenotazione corrispondente al pnr inserito!</p>"); } });
serializer
public class reservationserializer implements jsonserializer<reservation> { @override public jsonelement serialize(reservation r, type type, jsonserializationcontext jsc) { jsonobject json = new jsonobject(); json.add("id", new jsonprimitive(r.getid())); json.add("name", new jsonprimitive(r.getusername().getname())); json.add("surname", new jsonprimitive(r.getusername().getsurname())); json.add("airport_departure", new jsonprimitive(r.getroute().getairport_city_source().getname())); json.add("airport_arrival", new jsonprimitive(r.getroute().getairport_city_dest().getname())); json.add("date_departure", new jsonprimitive(datetostring(r.getroute().getdeparture_date()))); json.add("date_arrival", new jsonprimitive(datetostring(r.getroute().getarrival_date()))); json.add("passengers", new jsonprimitive(r.getpassengers())); json.add("luggages", new jsonprimitive(r.getluggages())); homecoming json; }
you can seek gson#tojson() serializes specified object equivalent json string representation.
if have cycle dependencies between objects need jsonserializer serialize object json string per need.
please have @ below post find sample code:
serialize java object gson
gson serialiser example
for more info read gson-user-guide
i have tried below sample code , works.
class reservation { private usercredential user; private string airport_city_source; // getter & setter } class usercredential { private string username; // getter & setter } class reservationserializer implements jsonserializer<reservation> { @override public jsonelement serialize(reservation r, type type, jsonserializationcontext jsc) { jsonobject json = new jsonobject(); json.add("name", new jsonprimitive(r.getuser().getusername())); json.add("airport_city_source", new jsonprimitive(r.getairport_city_source())); homecoming json; } } reservation reserv = new reservation(); usercredential user = new usercredential(); user.setusername("john"); reserv.setuser(user); reserv.setairport_city_source("uk"); gson gson = new gsonbuilder().registertypeadapter(reservation.class, new reservationserializer()).create(); system.out.println(gson.tojson(reserv));
output:
{"name":"john","airport_city_source":"uk"}
java gson
No comments:
Post a Comment