¡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 ;).
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).
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>
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:
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ú».
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
Clase JSONArray
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).
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!