httpservletrequest - return json from servlet to ajax
Recuperando el objeto JSON Literal de HttpServletRequest (7)
¿Estás buscando esto?
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuilder sb = new StringBuilder();
BufferedReader reader = request.getReader();
try {
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append(''/n'');
}
} finally {
reader.close();
}
System.out.println(sb.toString());
}
Estoy escribiendo código que necesita extraer un objeto literal publicado en un servlet. He estudiado la API para el objeto HttpServletRequest, pero no tengo claro cómo obtener el objeto JSON de la solicitud, ya que no se publica desde un elemento de formulario en una página web.
Cualquier idea es apreciada.
Gracias.
Convertir los datos recuperados del objeto de solicitud al objeto json es el siguiente utilizando google-gson
Gson gson = new Gson();
ABCClass c1 = gson.fromJson(data, ABCClass.class);
//ABC class is a class whose strcuture matches to the data variable retrieved
Este es un método simple para obtener datos de solicitud de HttpServletRequest
utilizando Java 8 Stream API :
String requestData = request.getReader().lines().collect(Collectors.joining());
Hay otra forma de hacerlo, usando org.apache.commons.io.IOUtils
para extraer el String de la solicitud
String jsonString = IOUtils.toString(request.getInputStream());
Luego puedes hacer lo que quieras, convertirlo a JSON
u otro objeto con Gson
, etc.
JSONObject json = new JSONObject(jsonString);
MyObject myObject = new Gson().fromJson(jsonString, MyObject.class);
La forma más fácil es llenar su bean desde un objeto Reader, esto se puede hacer en una sola llamada:
BufferedReader reader = request.getReader();
Gson gson = new Gson();
MyBean myBean = gson.fromJson(reader, MyBean.class);
Si intentas obtener datos del cuerpo de la solicitud, el código anterior funciona. Pero, creo que estás teniendo el mismo problema que yo ...
Si los datos en el cuerpo están en formato JSON, y lo quiere como un objeto Java, tendrá que analizarlo usted mismo, o usar una biblioteca como google-gson para manejarlo por usted. Debería ver los documentos y ejemplos en el sitio web del proyecto para saber cómo usarlo. Es bastante simple.
hacer uso del procesador jackson JSON
ObjectMapper mapper = new ObjectMapper();
Book book = mapper.readValue(request.getInputStream(),Book.class);