De JSON a objeto (en iOS y Android)

135 views
Skip to first unread message

Adrián Moreno Peña

unread,
May 28, 2012, 6:03:30 PM5/28/12
to galicia-mobi...@googlegroups.com
Buenas,

no sé cómo haréis normalmente la "traducción" de JSON a objetos en iOS y Android, pero en Zadia últimamente estamos usando un par de herramientas que nos hacen la vida mucho más fácil (hemos probado alguna que otra).

Para iOS, usamos Objectify para Mac (http://tigerbears.com/objectify/). Es una aplicación sencilla, de 15$, que te ahorra muchísimo tiempo. Le pones el JSOn que genera el backend, lo parsea, y te da los objetos listos para usar en iOS o Mac. En la beta (cerrada, pero con un mensaje al autor se participa) ya genera código compatible con ARC y todo. Combinado con un parser (me gusta SBJSON, json-framework: https://github.com/stig/json-framework), recuperar y procesar los objetos del backend se hace en un suspiro!

Para Android el planteamiento es análogo, más directo si cabe. Primero generar las clases con JSONGen (http://jsongen.byingtondesign.com/), una herramienta gratis online (si os funciona bien donadle algo al tipo, que ya veréis que os ahorra un tiempo hermoso!), y luego procesar el JSON con GSON (http://code.google.com/p/google-gson/), la librería para procesar JSON en Java de Google, que te convierte los datos recibidos en las clases que le indiques directamente.

Espero que os sea útil! :-)

Pablo Formoso Estrada

unread,
May 28, 2012, 6:52:30 PM5/28/12
to galicia-mobi...@googlegroups.com
Buenos apunte Adri ;)

Dentro de lo que comentas algo hablamos el otro día. Puede que por mi mentalidad de craftmanship no me gusta usar sbjson ni nada parecido, son lentos y limitan un poco el diseño del modelo de una app quedando obligado a el modelo en JSon. Por mi experiencia en iOS lo mejor para mi es usar JSonKit y AFNetworking :P JSKit es bastante más rápido que cualquier parser, incluso más que los plist... Para cada modelo suelo implementar el initWithEncoder y el encode que además permite meter en el userdefault modelos anidados sin hacer peripecias ni nada raro. La otra parte de estos frameworks es que no se llevan muy bien con CoreData y para persistencia en apps tochas esta bien tenerlo.

En Android yo sigo prefiriendo hacer la capa de modelo extendiendo de Parcelable y haciendo el constructor con el Parcel in y el out. La razón es la misma que la de usar el encode en iOS, serializar no es muy rápido en colecciones, siempre para gustos, me gusta trabajar con los ArrayList de los objetos finales.

De todas maneras seguro que de todos se puede sacar algo útil para proyectos express y ahorrar unas cansarse líneas :)

Bytes!!

Alberto Alonso Ruibal

unread,
May 30, 2012, 5:38:41 AM5/30/12
to galicia-mobi...@googlegroups.com
Soy yo el único cutre que en Android lo hace a mano con JSONArray y JSONObject??? XD

Tuve alguna discusión con @anderwebs y @JMPergar que recomendaban la librería Jackson para Android. El problema es usar una librería que ocupa más que la propia aplicación (por ejemplo en Gasolineras España, app de 376Kb) :D

Y siempre hablando de cosas sencillas, claro.

Adrián Moreno Peña

unread,
May 30, 2012, 5:43:26 AM5/30/12
to galicia-mobi...@googlegroups.com
No sois cutres, sois artesanos xD. A mi me gusta tener software que me haga las tareas repetitivas, al principio también lo hice a mano, pero con objetos con muchos campos me sentía como un mono de repetición con el copiapega :(

2012/5/30 Alberto Alonso Ruibal <alberto...@gmail.com>
Reply all
Reply to author
Forward
0 new messages