Cómo parsear JSON en Android Studio

¡Hola, vikingos! En esta ocasión vamos a aprender concepto muy importante en nuestras apps Android: parsear JSON para adquirir la información.

Antes de aprender a obtener datos de un JSON, debemos tener claro qué es y para qué sirve la estructura JSON.

Por cierto, aquí te dejo el vídeo de mi canal de Youtube donde hablo sobre esto, por si no te apetece leer o quieres ampliar la información ;).

¿Qué es JSON?

JSON es un lenguaje de etiquetado, creado para estructurar información y hacer posible la comunicación entre dos agentes. En el caso de Android, lo más común es que esta comunicación sea del tipo cliente-servidor; en concreto, lo utilizaremos para decodificar la información que nos envía el servidor (normalmente a través de servicios web).

Diferencias JSON XML – Comparativa

XML es otro lenguaje de etiquetado de información muy utilizado en las comunicaciones tecnológicas. La gran ventaja que presenta JSON en comparación con XML es que es mucho más fácil y rápido de interpretar y procesar, lo que lo hace estupendo para la programación móvil. Aquí dejo dos ejemplos de la misma información en JSON y en XML:

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}
<menu id="file" value="File">
  <popup>
    <menuitem value="New" onclick="CreateNewDoc()" />
    <menuitem value="Open" onclick="OpenDoc()" />
    <menuitem value="Close" onclick="CloseDoc()" />
  </popup>
</menu>

Estructura de un fichero JSON

Como se puede ver en la imagen superior, un fichero JSON cuenta con tres tipos de componentes, que se distinguen unos de otros por los caracteres que engloban al elemento en sí. Los definimos de la siguiente forma:

  • Objetos: Creados con llaves ( {} ). Por definición, el fichero entero ha de venir dentro de un objeto, es decir, el root ha de ser un objeto JSON.
  • Arrays: estos listados de elementos vienen definidos por corchetes ( [] ) y representan listados de elementos del mismo tipo. Es decir, podemos tener un array de objetos JSON, o un array de arrays JSON. Aunque también un array de atributos.
  • Atributos: Albergan la información en tipos simples de datos, normalmente texto o números, y se delimitan entre comillas, pero a la derecha de los dos puntos.

Cada uno de estos elementos forma un par clave – valor, separado por dos puntos, siendo el texto que queda a la izquierda el identificador del elemento y el de la derecha el elemento en sí. Por ejemplo, en el ejemplo de arriba, podemos ver cómo hay un objeto JSON cuyo nombre o id es “menú”.

Cómo parsear JSON en Android Studio

Una vez que hemos visto y entendido cómo se estructura un objeto JSON, es hora de aprender a obtener la información con Android Studio. Para ello vamos a hacer uso de las clases que nos ofrece el SDK:

Clase JSONObject

  • JSONObject(String s): Nos permite crear un objeto JSON desde un texto de tipo String.
  • getJSONObject(String id): Nos devuelve el objeto de tipo JSONObject cuyo identificador es el valor que haya en la variable id.
  • getJSONArray(String id): Nos devuelve el array JSON cuyo nombre es el valor que tome id.
  • getXXXX(String i): Accedemos al tipo simple de datos que se llame i. XXXX puede ser Int, String, Double, etc. Con este método accederemos a los campos de información.

Clase JSONArray

  • getJSONArray(int i): Nos devuelve el array que haya en la posición i.
  • getJSONObject(int i): Nos devuelve el objeto JSON que hay en la posición i.
  • length(): Nos devuelve un entero con la logitud del array (muy útil para recorrerlo en un bucle for).

Una vez combinemos estos métodos vamos a poder desgranar toda la información codificada en el fichero. Por cierto, recuerda que siempre vamos a necesitar capturar exceptiones de tipo JSONException, ya que puede que el JSON a parsear no esté bien definido, o busquemos campos que no existan (esto ocurre a veces con APIs reales).

fragmento de código donde se muestra cómo parsear JSON en Android studio

Si quieres ver un ejemplo práctico te aconsejo que acudas al vídeo que puse arriba, donde lo verás en directo. No obstante, también he creado este pequeño proyecto de github donde podrás ver los métodos empleados en un ejemplo real.

¡Nos vemos en el siguiente post!