Android: app de web ¿JSON o XML?

BLZKZ

Veréis estoy desarrollando a modo de prueba un cms, y me gustaría tener una app de dicho cms para android, el tema es que no se que usar.

Es "muy fácil" hacer una version movil de la web, tipo http://m.mediavida.com y embeber un browser y tirar de ahí, el tema está en que no quiero eso, sino que la app "haga" la interfaz. Habia pensado hacerlo parseando xml que el cms contruiría (esto más o menos si sabria hacerlo, de hecho tengo un lector de rss hecho de otra web para android y seria simplemente "adaptar" informacion) pero también me ha surgido la idea de usar JSON. De esto ultimo mi idea tiende a 0, asi que quería saber si habeis enredado con estos temas, si hay otra posible solución (teniendo en cuenta que desde la app de android no puedo hacer llamadas directas a la base de datos mysql y tendría que recibir los datos desde la web.

Busco ideas y si es hasta posible algun tuto, el codigo me la trae al pairo xD

gracias ;)

elkaoD

#1 no te ralles, son prácticamente lo mismo. Te los van a intentar vender como fuertes competidores, pero o yo estoy un poco corto o son prácticamente lo mismo con diferente sintaxis. Algunos decían que JSON era más pequeño (discrepo, mismo tamaño aproximado) y de legibilidad andan más o menos igual ambos, así que...

La única ventaja de JSON es que si controlas al 100% la fuente de datos (para no tener problemas de seguridad) se puede evaluar con un simple eval() en JS, pero supong que para tu app te es más fácil embeber el parser XML que seguramente venga en Android que tirar de JS (que tendría gracia sólo en navegadores.)

1 respuesta
BLZKZ

#2 gracias xD entonces tiraré por la opción de XML que ya lo tengo asumido tanto en la web como en android :)

MTX_Anubis

Android trae ya un jar para tratar los json (org.json) o puedes utilizar librerías como jackson json que van bastante bien.

Suelo utilizar json para el envío información y sinceramente, te recomiento lo que menos trabajo te vaya a dar (si tienes trabajo hecho con el xml, tira por ahí).

1 respuesta
BLZKZ

#4 lo vi, pero para xml trae sax y es acojonante xD. De momento solo lo habia pensado para la recepcion desde el terminal, el envio aun no habia pensado si hacerlo con json o con apache.http o xml :/

pdj

#1 Te recomiendo JSON para el intercambio de información, si nitas ejemplos, tengo un monton de JSON parseados en java

2 respuestas
M

Yo siempre recomiendo usar Gson (http://code.google.com/p/google-gson/). Segun los tests que he realizado, es algo mas rapida en el parseo que la libreria oficial que incluye el SDK, y lo mejor es que es facilismo de usar.

1 respuesta
BLZKZ

el tema es que json o gson nunca lo he usado, se agradeceria algun tuto para android decente (mientras este en ingles o español) xD

Edit: #6 #7 os cito por si sabeis algo XD

B

Antes solia ver soap o xml-rpc en webservices, pero desde hace un año la mayoria de lo que tengo que implementar va con json. Será por modas supongo.

1 respuesta
M

La documentacion del proyecto GSON creo que es bastante buena, y añaden ejemplos bastantes practicos. La puedes consultar aqui. Tambien tienes disponible en la web la documentacion Javadoc

1 respuesta
elkaoD

#6 por qué? Lo digo en serio, ¿cuál es la ventaja que le véis los que recomendáis JSON?

Es que yo no veo una razón clara por la que usar una u otra.

2 respuestas
pio-

#11 ocupa muchisimo menos

2 respuestas
BLZKZ

#12 lo de que ocupa menos... la diferencia por los ejemplos que ha visto es despreciable :S

#10 gracias

#9 pues si, xml-rpc y -rpcs es lo que tenia en mente usar si no habia opciones mucho mejores, dado que la web está hecha con codeingniter y hay helpers para ello xD

2 respuestas
pio-

#13 hace poco me he encontrado con el mismo dilema para pasar datos de un cliente a un servidor (xml o json), despues de unas pruebas con ambos tipos, con el formato json, ocupaba cosa de 1/4 menos de capacidad, todo lo que puedas ahorrarte a la hora de transmitir, pues mejor, y si estamos hablando para un movil, mas en cuenta lo tendrias que tener, que no todo el mundo tiene tarifa plana.

2 respuestas
BLZKZ

#14 no es que no me importe, de hecho la comunicacione cliente -> servidor no se aún como la haré (por eso pido tutos y tal), lo que habia decidido más arriba era la parte servidor-> cliente

1 respuesta
MTX_Anubis

http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking

comparativas, cabe decir: Omitted from the first three charts: json/google-gson and scala. These serializers are so slow, they would break the scale of our charts. See below for the naked data

#11 Por sinergía y dependiendo de lo que envíes, si envías pojo's, queda mejor JSON porque es por decirlo de una manera, más natural su representación. A parte de que ocupa menos (para enviar 4 cosas te da igual pero riete tú de algunas respuestas que se envían).

#13 También hay helpers para jsons!

#15 Para la comunicación cliente-server yo utilizaría REST.

2 respuestas
BLZKZ

#16 prrrrrffffffffff xDDDDDDD Tendre que aprender a usarlo, y me tocará preguntar por aqui for sure

Gracias ;)

1 respuesta
eisenfaust

Hay un razón por la que muchas BBDD No-SQL utilizan JSON en lugar de XML. Además, personalmente lo veo muchísimo más legible que XML. En serio, ¿En qué estaban pensando cuando crearon eso?

Otra opción sería utilizar un lenguaje homoicónico y dejarse de historias.

1 respuesta
pdj

#17 yo aprendi "sobre la marcha" pero vamos que es muuuuuuuy sencillito y si te manejas con java pues chupao, en la pagina oficial tienes varios tutoriales pero ya te digo que no es chungo. Yo llevo peleandome con android un tiempo bueno, si nitas algo mas concreto avisa y si quieres algun ejemplo de parsear jsons avisa!

elkaoD

#12 #14 ojo, depende MUCHO del contexto. Yo aquí hablo un poco por hablar, no he trabajo ampliamente con JSON (he tocado mucho más XML), pero por lo que visto y por lo que he hablado con un compañero de clase que sí se maneja más con ambos, depende mucho del conjunto de datos a tratar. Además, si comprimes se iguala mucho en tamaño, XML tiene más estructuras repetidas que a mi juicio añaden legibilidad en texto plano y comprimen mucho más.

#16 uff, las comparativas sólo me dicen que, como todo, depende de la implementación.

Respecto a los de los POJO's (joder, lo he tenido que Googlear) no veo a simple vista por que la representación es más simple, ¿puedes aclararlo?

#18 hombre, en cuanto a la legibilidad sí que es la mayor diferencia que le veo que en el resto de cuestiones, pero tampoco tanta, y además la veo a la inversa que tú xD A mí como humano me parece mucho más legible XML que JSON en ciertos casos porque me parece más descriptivo en cuanto a pertenencia de atributos se refiere (diferencia atributo de sub-etiquetas, parece tontería pero a veces importa.) Lo único que me gusta de JSON es la agrupación de etiquetas repetidas y ni siquiera es la panecea, su ventaja depende del contexto.

Revisando ejemplos no puedo entender cómo te parece más legible JSON. Bajo mi punto de vista le sobran comillas y me hace ver peor la estructura jerárquica a simple vista. A lo mejor es que estoy acostumbrado a HTML, pero los lenguajes de marcado me parecen muy cómodos para eso.


Mira que le he dado vueltas y no llego a ninguna conclusión, ¡los defensores y detractores de ambos lados me dan los mismos argumentos! Yo aquí sólo concluyo que en informática a la gente le gusta lo que ha usado primero xD

Nah, creo que en realidad es como todo y depende del contexto en el que te encuentres. Supongo que será hacer pruebas y quedarte con el que más te convenza.

Además es que me cabrea un poco que en la propia web de JSON te pongan estos ejemplos http://www.json.org/example.html y resulta que la mitad de los de XML están escritos por un niño de 3 años o la mascota del programador o algo así.

1 respuesta
Soltrac

JSON ocupa un poco menos que XML.

Otro tema ya es webservices con SOAP-XML, que meten una cabecera enorme y sí que sube el tamaño un montón.

Para mi JSON es más legible (para datos sencillos, en estructuras complejas me parece más cómodo XML), más corto y en webservices combinado acaba siendo REST más rápido.

Mi opinión? Si hablamos exclusivamente de como mostrar los datos, escoge el que te salga de abajo porque la diferencia es mínima.

Tig

Que no te de miedo JSON. Si tienes una cadena, tener un objeto json es tan sencillo como

JSONObject datosJson = new JSONObject(jsonString);

Si necesitas iterar sobre las claves

Iterator<String> clavesDatos = datosJson.keys();

Si sabes las claves que tienes que coger

JSONArray listadoJsonArray = datosJson.getJSONArray("claveLista");

Y así sucesivamente. He omitido el control de excepciones, of course.

He hecho bastantes apps Android que trabajan con JSON y es muy cómodo. De hecho, ningún cliente me ha pedido trabajar con XML.

HoTiTo

A modo de prueba estuve trasteando con bases de datos NoSQL (MongoDB en concreto) y JSON me pareció mejor alternativa que XML. Sinceramente no te sabría decir por qué, no he buscado información sobre el tema. Pero mi experiencia ha sido más gratificante con JSON.

Al menos lo considero más legible.

eisenfaust

#20 Hombre, depende de dónde vengas y a qué estés acostumbrado. Para una persona que haya utilizado muchos lenguajes con sintaxis nativa para hashes como Perl o JavaScript le parecerá muchísimo más sencillo JSON. Parece no ser tu caso.

JSON
XML

Personalmente me sigo quedando con las s-expressions de toda la vida.

spoiler

El problema es que para muchos Javascript ya es el ensamblador de la Web, y eso tira mucho xD

1 respuesta
elkaoD

#24 has puesto justo uno de esos XML escritos por niños de 4 años que comento en #20 xD No entiendo por qué usar etiquetas para lo que son atributos. Usar etiquetas para establecer una relación no-jerárquica no tiene sentido, enmaraña y no es sintácticamente correcto. Así yo también publicito JSON (ese ejemplo es de la web oficial de JSON)

Por cierto, eso de las S-Expression parece como un JSON des-afeado. Le echaré un vistazo.

eisenfaust

Lo primero que encontré en Google xD

N3uMaN

Yo he elegido JSON para la comunicación entre una app en Android y un servicio web REST y estoy muy contento. Uso Gson para enviar y recibir los POJO's. Para parsear JSON que me llega como respuesta a peticiones a otras API's, como Google Distance Matrix, uso org.json.

Un ejemplo de uso de Gson:

public static String toJson(Object object) {
	Gson gson = new Gson();
	return gson.toJson(object);
}

public static <T> T fromJson(String jsonObject, Type type) {
	Gson gson = new Gson();
	return gson.fromJson(jsonObject, type);
}	

Usuarios habituales