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

Respuesta
 
Herramientas
  #1  
Viejo 17/02/14, 12:59:32
Array

[xs_avatar]
Zaitung Zaitung no está en línea
Usuario poco activo
 
Fecha de registro: jun 2012
Mensajes: 22
Tu operador: Movistar

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");
         }
Sin embargo ese fichero tiene una gran cantidad de registros y a veces llega a tardar varios minutos.
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)

Responder Con Cita


  #2  
Viejo 17/02/14, 13:16:21
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
¿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.
Responder Con Cita
  #3  
Viejo 17/02/14, 14:00:37
Array

[xs_avatar]
Zaitung Zaitung no está en línea
Usuario poco activo
 
Fecha de registro: jun 2012
Mensajes: 22
Tu operador: Movistar

Muchas gracias probaré con la librería GSON
Responder Con Cita
  #4  
Viejo 17/02/14, 21:28:16
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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.
Responder Con Cita
  #5  
Viejo 18/02/14, 10:20:35
Array

[xs_avatar]
Zaitung Zaitung no está en línea
Usuario poco activo
 
Fecha de registro: jun 2012
Mensajes: 22
Tu operador: Movistar

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 =)
Responder Con Cita
  #6  
Viejo 18/02/14, 11:36:14
Array

[xs_avatar]
jtsamper jtsamper no está en línea
Miembro del foro
 
Fecha de registro: abr 2013
Localización: Madrid
Mensajes: 149
Modelo de smartphone: Xperia Arc, Nexus 5
Tu operador: Movistar
Pero tienes que mostrar todos a la vez?? o lo guardas hasta que lo necesitas??? Siempre tiene que ser descargado??
__________________
Controlador de Medicamentos 1.5 (https://play.google.com/store/apps/d...mentcontrolled)
Legislación Basica Española 1.1 (https://play.google.com/store/apps/d...islacionbasica)
Responder Con Cita
  #7  
Viejo 18/02/14, 12:42:13
Array

[xs_avatar]
Zaitung Zaitung no está en línea
Usuario poco activo
 
Fecha de registro: jun 2012
Mensajes: 22
Tu operador: Movistar

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?

Responder Con Cita
  #8  
Viejo 18/02/14, 13:49:38
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Prueba con \\:
Responder Con Cita
  #9  
Viejo 18/02/14, 14:19:33
Array

[xs_avatar]
Zaitung Zaitung no está en línea
Usuario poco activo
 
Fecha de registro: jun 2012
Mensajes: 22
Tu operador: Movistar

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.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 01:57:38 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /