![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Leer fichero JSON
Tengo una app que se descarga un fichero en formato JSON de una pagina web, una vez que lo tengo le voy extrayendo los campos que necesito, de la siguiente manera:
Código:
try {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse httpResponse = httpclient.execute(new HttpGet(URL));
inputStream = httpResponse.getEntity().getContent();
if(inputStream != null){
result = convertInputStreamToString(inputStream);
}
else
result = "Did not work!";
} catch (IOException ex) {
ex.printStackTrace();
}
JSSONObject jsonObj = new JSONObject(result);
File= jsonObj.getJSONArray("resources");
for (int i = 0; i < File.length(); i++) {
JSONObject c = File.getJSONObject(i);
variable1= c.getDouble("TAG");
}
No se si hay alguna manera de leerlo mas rápido o si en otro formato aceleraría la búsqueda (tengo disponibles RDF/XML, HTML, JSON, N3, XML, TURTLE, CSV, ATOM, JSONLD) ![]()
|
|
|
|
#2
|
||||
|
||||
|
¿Cuánto es una gran cantidad? ¿100? ¿200? ¿1.000.000? Con 100 o 200 no debería tardar mucho, con 1.000.000 si puede tardar tiempo, aunque tanto como varios minutos me parece excesivo. Además, ¿Qué es lo que tarda? ¿Sólo la deserialización o incluyes el tiempo de descarga? Si el JSON ocupa mucho y estás en 2G también hay que tenerlo en cuenta.
Precisamente la ventaja del JSON frente a otros formatos como el XML o el HTML es que ocupa bastante menos. El más ligero de todos es el CSV, pero también es el más difícil de entender viendo el fichero. Y tampoco vas a ahorrar mucho. Y para trabajar con JSON te recomiendo la librería GSON de Google. Te hace por detrás todo el trabajo de la deserialización, y lo único que tienes que hacer es crear objetos con los nombres que vienen en el JSON. |
|
#3
|
||||
|
||||
|
Muchas gracias probaré con la librería GSON
|
|
#4
|
||||
|
||||
|
La librería GSON no va a hacer que vaya más rápido, lo único que hace es hacer por detrás el proceso de deserialización que haces en el For, pero de una forma más limpia y escalable. Tan escalable que si añades campos nuevos en el JSON lo único que tendrás que hacer es añadirlos a la clase que quieres deserializar y GSON te hará todo el trabajo.
|
|
#5
|
||||
|
||||
|
He estado mirando y veo que el fichero se baja en segundos (ocupa 400 Kb) sin embargo tarda 1 minuto en crear el JSON Object a partir del fichero, he estado buscando información sobre la librería GSON y la verdad es que como no tengo mucha idea se me hace un poco cuesta arriba. Si hay alguien que sepa de algún tutorial me vendría muy bien gracias =)
|
|
#6
|
|
Pero tienes que mostrar todos a la vez?? o lo guardas hasta que lo necesitas??? Siempre tiene que ser descargado??
|
|
#7
|
||||
|
||||
|
Al final he resuelto el problema de una manera mas sencilla y que desconocía, uso una petición PHP para filtrar los resultados y asi evito descargarme todo el fichero, y luego filtrar los que necesito. Sin embargo el problema viene que cuando defino la URL, parece que no puede contenter "\:" algo que me es necesario.
private String URL = URL + "&query=(tag\:"; Error : Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ ) ¿Alguna idea? ![]() ![]()
|
|
#9
|
||||
|
||||
|
Al final resolví el problema, por si alguien le pasa utilicé un equivalente, para el slash es %2F y para el contaraio, el que yo necesitaba es %5C
Última edición por Zaitung Día 18/02/14 a las 14:45:53 |
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 14:24:33 (GMT +1)
HTCMania: líderes desde el 2007






