Gson: Librería para parsear JSON en Android

| 2016-11-23 | No hay comentarios »

Antes de comenzar me gustaría darles la defición de JSON: Es un formato de intercambio de información que está basado en estructuras de pares clave-valor.

Puede darse la situación de que en nuestra aplicación Android, necesitemos atender peticiones representadas en JSON, transformarlas a Java, tratar los datos y devolver una respuesta en JSON. Los WebServices REST son un buen ejemplo de esto.

Para resolver este problema podemos implementar de forma manual la lógica de negocio para serializar y deserializar nuestro JSON, lo que supodrá un esfuerzo considerable. O bien podríamos hacer uso de alguna libería diseñada para este propósito como puede ser Gson.

En este artículo vamos a aprender a utilizar Gson para parsear JSON utilizando Android Studio como IDE.

Integrar Gson en Android Studio

Para comenzar necesitaremos modificar el archivo build.gradle agregando la siguiente dependencia en la sección dependencies:

compile 'com.google.code.gson:gson:2.7'

Tras escribir esta nueva línea en pantalla tendremos un mensaje que nos indicará que se ha cambiado algún archivo gradle, y que para que todo funcione bien tendremos que volver a sincronizar. Para hacerlo no tenemos más que darle a “Sync Now” en la parte derecha

Utilizar Gson

Una vez tenemos nuestra librería descargada, sólo nos queda utilizarla y parsear nuestros documentos JSON, o nuestros objetos Java.

Ya en la Activity del proyecto, este documento lo almacenaremos en un objeto de tipo String para poder parsearlo posteriormente:

private final static String jsonDocument = "{" +
           "        \"title\": \"Uploads from everyone\"," +
           "        \"description\": \"Description from everyone is........\"" +
           "}";
En primer lugar vamos a crear la clase que contiene la información de nuestro documento:
public class Post{
    private String title;
    private String description;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

Deserializar el documento JSON

Y con esto, por fin, tendríamos ya creada la clase que necesitamos para poder almacenar la información del JSON en un objeto que podamos utilizar nosotros mismos. El siguiente paso sería, de nuevo en nuestra Activity, declarar un objeto Gson, y posteriormente declarar otro objeto de tipo Post en la que almacenaremos la información del JSON:

@Override
super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
        // Se añade disableHtmlEscaping() para evitar parseo de símbolos html.
       Gson gson = new GsonBuilder().disableHtmlEscaping().create();
       Post post = gson.fromJson(jsonDocument, Post.class);
       Log.d("Test",post.getTitle());
}
 En este caso hemos utilizado un objeto GsonBuilder porque necesitamos escapar los símbolos html, en el caso de que no necesitemos ningún tipo de configuración basta con hacer:
Gson gson = new Gson();
El siguiente paso a realizar a modo de ejemplo sería convertir este objeto que tenemos en Java en una documento JSON, para eso Gson nos permite deserializar nuestra clase para extraer el documento JSON a partir de sus datos, aunque esta es la parte más sencilla de todas. Se haría simplemente llamando al método toJson del objeto gson, y le pasaríamos como parámetro el objeto que queremos parsear a JSON:
String json = gson.toJson(post);

Espero que les sea de mucha utilidad el artículo, cualquier consulta haganmela en la caja de comentarios!

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Flutter: Escribiendo código personalizado para plataformas (Android / iOS)
  • Crear APP utilizando Flutter (Dart)
  • Crear múltiples productFlavors con Android Studio
  • Butter Knife: librería para inyectar vistas en Android



SEGUÍNOS EN FACEBOOK


GITHUB