JSON es un formato de intercambio de datos cliente-servidor muy liviano y fácil de utilizar. Junto con XML son los formatos (basados en texto) probablemente más extendidos en la red.
{ "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": 10021 }, "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }Fácil, ¿no?
En el mundo de las aplicaciones móviles JSON es muy importante porque la gran mayoría necesitan conectarse a un servidor para funcionar. AdMob, Yahoo Weather, Google Play Game Services... casi todos los "grandes" usan JSON (y XML), para codificar los datos que intercambian con las aplicaciones.
Y si eres de los "pequeños" ( o de los nuestros ;)), y tienes un servidor que quieres utilizar para desarrollar una App, quizás una base de datos MySql y unos cuantos PHP, un sincero consejo: usa JSON. Las dos grandes plataformas móviles (iOS y Android o Android e iOS), se integran muy bien y también se lleva bien con PHP+MySql. La segunda opción sería XML, pero en mi opinión los móviles hacen mejores migas con JSON.
Y entonces llega la segunda gran pregunta cuando diseñas uno de estos sistemas de intercambio de datos y te das cuenta de que tienes 10 o 20 tipos de mensajes diferentes cliente-servidor y el mismo número de archivos de código para interpretarlos (y por lo tanto un montón de bugs y errores): "Debe existir algún sistema estándar para estructurar estos mensajes, ¿no?. Así podría reutilizar algo de código y eliminar bugs...".
Pues a falta de una gran respuesta oficial, mi sugerencia es JSend:
{ status : "success", data : { "post" : { "id" : 1, "title" : "Título", "body" : "Mensaje" } } }
Los campos principales son:
- status: que indica si la operación ha sido correcta ("success"), ha fallado ("fail") o ha habido un error ("error"). La diferencia entre fallo y error es que el primero se utiliza cuando hay un problema con los datos que se han enviado en la petición o cuando hay un problema en la llamada a la API (p.ej. una petición que requiere estar logueado sin estarlo).
- data: contiene los datos que se envían en el mensaje en caso de haber sido la operación correcta, o los motivos de fallo. Obligatorio en caso de petición correcta o con fallo.
- message: En caso de haber ocurrido un error (p.ej. en el servidor) indica los motivos del error. Obligatorio en caso de error.
- code: Código descriptivo del error, podéis utilizar los mismos que de HTTP si queréis. Opcional en caso de error.
Ejemplos:
- Petición de datos de un usuario correcta:
{ "status" : "success", "data" : { "post" : { "id" : 1, "username" : "pepe", "name" : "José", "lastname" : "Navarro" } }
- Fallo de autenticación:
{ "status" : "fail", "data" : { "title" : "La contraseña no es correcta" } }
- Error en el servidor por tiempo de espera superado:
{ "status" : "error", "message" : "Tiempo de espera superado" "code" : "508" }
No hay comentarios:
Publicar un comentario