Envío de JSON por request

miércoles, mayo 28, 2014 , , 2 Comments



Hola amigos javeros, para nuestras aplicaciones es muy común tener un notorio desacoplamiento entre la programación del Back-end  y Front-end, ya que cada uno realiza  operaciones y testeo diferente.


Para poder comunicar el back con el front se crearon Web Services, XLM y en este caso JSON, pero ¿Qué es un “JSON”? muy sencillo:


JSON: acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos.


Bien para poder mandar un JSON por request lo primero que tenemos que hacer es saber que vas a mandar en el JSON, un objeto de tipo json se comporta como un objeto de tipo MAP, ya que cuenta con métodos como put, donde puedes poner una key y un value,


Por lo cual para acceder a ellos tenemos el método get.


Si estamos utilizando maven lo primero que tenemos que hacer es agregar la dependencia. Para este ejemplo ocupare la siguiente librería, existen más librerías útiles como la de google para el json:

          


           
      
   

Una vez que se haya agregado al proyecto procederemos a crear el objeto de tipo JSON, un json se comporta como cualquier objeto de java tiene sus constructores, cuenta con métodos los cuales podemos acceder con la ayuda de nuestro ide.


Por lo cual ocuparemos un constructor vacío para crear nuestro JSON


JSONObject jsonObject=new  JSONObject();


Empezaremos a agregar nuestros atributos al JSON, pongamos como ejemplo que tenemos que mandar los datos primarios de una persona, como: nombre apellido paterno, apellido materno y número de registro.


  • Nombre: pepe
  • Apellido paterno: perez
  • Apellido materno:godinez
  • Teléfono: 67389


Para adjuntar la información a nuestro objeto JSON se realiza de la siguiente forma:


jsonObject.put("nombre",”pepe”);
jsonObject.put("apaterno",”perez”);
jsonObject.put("amaterno",”godinez”);
jsonObject.put("numero",”67389”);


Nota: El método put() funciona de la misma manera que en un map, puedes agregar key y value donde en valor puedes meter cualquier tipo de objeto y cuando digo cualquier es cualquier ya sea un arreglo o otro json.


Por último tenemos que mandar la información por request por medio de  nuestro servlet


response.addHeader("Access-Control-Allow-Origin", "*");
           response.setCharacterEncoding("utf8");
           response.setContentType("application/json");
           PrintWriter out = response.getWriter();
           out.print(jsonObject);


Listo nos debe de quedar algo parecido a esto:



  
   public void getJson(HttpServletRequest request, HttpServletResponse response){
try {
JSONObject jsonObject=new  JSONObject();
jsonObject.put("nombre",”pepe”);
jsonObject.put("apaterno",”perez”);
jsonObject.put("amaterno",”godinez”);
jsonObject.put("numero",”67389”);
response.addHeader("Access-Control-Allow-Origin", "*");
            response.setCharacterEncoding("utf8");
            response.setContentType("application/json");
            PrintWriter out = response.getWriter();
            out.print(jsonObject);
        } catch (Exception e) {
            e.printStackTrace();
          }
}


Al  momento de mandar a llamar a nuestro servlet el navegador responderá de la siguiente forma:


{“nombre”:”pepe”,”apaterno”:”perez”,”amaterno”:”godinez”,”numero”:”67389”}





Ya pueden comunicar el back del front, espero que les haya servido de mucho, y en los siguientes post profundizaremos de como mandar una lista, y  un json más complejo. Saludos amigos javeros.

Siguenos en nuestras redes sociales.

2 comentarios:

  1. Hola, esta muy bueno tu aporte. La verdad apenas estoy aprendiendo esta tecnología y tengo una duda con un proyecto de la U que me encuentro desarrollando. Si quiero hacer el request a otro back-end el cual me devuelve el json como seria el proceso. Gracias si me puedes ayudar..

    ResponderEliminar
    Respuestas
    1. Se puede realizar de varias formas, una puede ser ocupar ajax para la petición desde una JSP o un HTML, si quieres hacerla desde un servlet es un poco más complicado, pero de igual forma se puede realizar, en mi siguiente publicación pondré un ejemplo de como realizar la petición desde el Front-end

      Eliminar