Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/09/2015, 11:04
Avatar de Ferkhis
Ferkhis
 
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 13 años
Puntos: 2
Exclamación Respuesta: Acceder a datos JSON en Servlet

Cita:
Iniciado por ElAthlit Ver Mensaje
Hola,
un json es solamente un String más, como cualquier string de un input. Deberías poder recuperarlo con un request.getParameter("como_lo_llames");

Y con Gson o Jackson convertirlo a objeto.

Saludos
Hola! Muchas gracias por tu respuesta. La solución de usar getParameter() la he visto mucho en internet, pero creo que sólo funciona cuando empleamos Jquery. Si te das cuenta, mi código no usa Jquery sino que emplea el XMLHttpRequest. Yo intenté usar getParameter(), pero siempre arroja null en el campo que quiero recuperar. He logrado ensamblar una solución parcial empleando la librería Gson y visitando varios posts en diferentes sitios que luce más o menos así:

Código Java:
Ver original
  1. public static class PostData //Se declara una clase con una estructura similar al JSON que se recibe
  2.     {
  3.         private String name;
  4.         private String age;
  5.         private String country;
  6.         List<String> skills;
  7.        
  8.         public String getName() { return name; }
  9.        
  10.         public String getAge() { return age; }
  11.        
  12.         public String getCountry() { return country; }
  13.        
  14.         public List<String> getSkills() { return skills; }
  15.        
  16.         public PostData() { }
  17.     }
  18.    
  19.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  20.     {
  21.         BufferedReader reader = request.getReader(); //Se toma la fuente de datos de la solicitud
  22.         Gson gson = new Gson(); //Se crea un objeto JSON con la librería de Google
  23.         PostData data = gson.fromJson(reader, PostData.class); //Se instancia la clase Data como un objeto JSON que apunta a la fuente de datos
  24.        
  25.         //Se imprimen los datos dentro del JSON
  26.         System.out.println("Nombre: " + data.getName());
  27.         System.out.println("Edad: " + data.getAge());
  28.         System.out.println("País: " + data.getCountry());
  29.        
  30.         for (int i = 0; i < data.skills.size() ; i++)
  31.         {
  32.             System.out.println("Conocimiento " + i + ": " + data.skills.get(i).toString());
  33.         }
  34.     }