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