miércoles, 16 de mayo de 2012

JSON en iOS


Intro
Para esta entrada, veremos un poco sobre la comunicación de datos entre un dispositivo móvil y un servidor, en éste caso veremos en un dispositivo en iOS.


Forma de Comunicación JSON
En esta parte veremos la comunicación con JSON, pero antes, hay que ver la estructura de un JSON.
Para no aburrirlos en la teoria, les pondre la estructura del ejemplo que utilice.
Ustedes lo pueden ver el la siguiente URL




Hay varias herramientas que nos pueden generar una estructura Json, en este caso yo lo generé con php, también podemos comprobar si una estrura esta correcta, con algunos plugins de los navegadores como JsonView de Google Chrome y Firefox.


La estructura como la vemos, tiene un nodo padre, donde en este lo identificamos en el que empezara el arbol, despues contiene nodos hijos, que es la informacion que nos proporciona respeto a lo que estamos buscando o los parametros que nos esta arrojando. Como podemos ver esta estructura es algo semejante a una estructura de XML, la diferencia es que nosotros lo vemos con corchetes y square brackets.
Nosotros, le podemos ir agregando mas nodos hijos que partan del nodo padre (nodo hijo anterior), para agregar mas parámetros, entre otros.

iOS
Ahora que tenemos una breve idea de como es la estructura de un JSON, partiremos a leerla.


  • En la primera linea estamos declarondo un valor como NSData, que en  nuestro caso,  lo utilizaremos para guardar la URL y procesarla.
  • Creamos un NSError
  • Creamos un diccionario con el nombre de dict1 indicando que codificaremos el valor obtenido como un JSON, dandole la url y dandole el parámetro de error (el parámetro error que creamos será muy importante y útil, ya que en ocasiones nos tronara al momento de ejecutarlo o no devolverá ningun valor, provocando muchos dolores de cabeza, así que es muy excencial el uso de este como debuger, para saber que resultado arrojó basta con imprimirlo NSLOG(@"%@", error); ).

  • En esta otra parte, lo siguiente es crear un objeto array, donde introduciremos todo el contenido del nodo padre, que en este caso es materias (para ver el contenido que contiene, podemos imprimir la variable que creamos).
  • La siguiente línea, lo que hago es crear un valor entera, donde contaré los objetos hijos que tenemos, que mas adelante utilizaré.
  • La última linea lo que hace es imprimir el total de nodos hijo que tiene, que en este caso es 4

  • Empiezo un for para leer cada nodo hijo que tiene materias
  • Creo un objeto diccionario, ya que es donde tenemos los valores del nodo hijo y poder acceder a ellos, ya que de lo contrario nos tronara (hay que tomar en cuenta que cada vez que tengamos un nodo padre y queramos consultar su nodo hijo hay que repetir este proceso), indicando que leerá el index del valor de i.
  • Creo un objeto String donde guardare los valores de nuestro parametros
  • Finalmente imprimo los valores de cada uno.

Código completo

Para este ejemplo puse un método llamado json, así que nosotros lo podemos mandar llamar desde nuestro viewdidload con [self json];.

Resultado


Ya para finalizar, este tipo de transferencia es mucho mas sencilla a la hora de leer parametros de un servidor, ya que esta estructurada y tenemos un mayor control de su estructura o parametros proporcionados. Esto es muy útil al momento de hacer consultas a base de datos y que nos arroje resultados, para despues interpretarlos.

1 comentario: