Ayuda con JSON de GSON
Hola les cuento que tengo que obtener los datos de un JSON que obtengo de la API de Google...
http://maps.googleapis.com/maps/api/geocode/json?address=cholula,%20pueb...
Pero no tengo mucha idea de como obtener un JSON de ese tamaño, esto lo debo de hacer con GSON, aca dejo el JSON espero puedan darme una mano.
{
"results" : [
{
"address_components" : [
{
"long_name" : "Cholula",
"short_name" : "Cholula",
"types" : [ "route" ]
},
{
"long_name" : "La Paz",
"short_name" : "La Paz",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Heroica Puebla de Zaragoza",
"short_name" : "Heroica Puebla de Zaragoza",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Puebla",
"short_name" : "PUE",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "México",
"short_name" : "MX",
"types" : [ "country", "political" ]
},
{
"long_name" : "72160",
"short_name" : "72160",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Cholula, La Paz, 72160 Puebla, PUE, México",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 19.05461770,
"lng" : -98.22511950000001
},
"southwest" : {
"lat" : 19.05343170,
"lng" : -98.22815570
}
},
"location" : {
"lat" : 19.05356190,
"lng" : -98.22651650
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : 19.05537368029150,
"lng" : -98.22511950000001
},
"southwest" : {
"lat" : 19.05267571970850,
"lng" : -98.22815570
}
}
},
"types" : [ "route" ]
}
],
"status" : "OK"
}
"results" : [
{
"address_components" : [
{
"long_name" : "Cholula",
"short_name" : "Cholula",
"types" : [ "route" ]
},
{
"long_name" : "La Paz",
"short_name" : "La Paz",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Heroica Puebla de Zaragoza",
"short_name" : "Heroica Puebla de Zaragoza",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Puebla",
"short_name" : "PUE",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "México",
"short_name" : "MX",
"types" : [ "country", "political" ]
},
{
"long_name" : "72160",
"short_name" : "72160",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Cholula, La Paz, 72160 Puebla, PUE, México",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 19.05461770,
"lng" : -98.22511950000001
},
"southwest" : {
"lat" : 19.05343170,
"lng" : -98.22815570
}
},
"location" : {
"lat" : 19.05356190,
"lng" : -98.22651650
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : 19.05537368029150,
"lng" : -98.22511950000001
},
"southwest" : {
"lat" : 19.05267571970850,
"lng" : -98.22815570
}
}
},
"types" : [ "route" ]
}
],
"status" : "OK"
}
- Inicie sesión o regístrese para enviar comentarios
GSON sirve para procesar el
GSON sirve para procesar el JSON pero no sirve para obtenerlo. Para ello debes de usar alguna otra biblioteca como el HttpClient
Saludos
Con Java IO y net
pues tambien es posible abrir una conexion a la URL que te regresa el JSON usando el api de Java IO y net.
URLConnection conexion = urlRecursoWeb.openConnection ();
BufferedReader buferDeRecursoWeb = new BufferedReader (new InputStreamReader (conexion.getInputStream ()));
y con eso, como ya tienes el buffer, entonces usas el tradicional bucle que lee hasta que la entrada es nula
contenido.append (inputLine);
}
Suponiendo que
contenido
es unStringBuilder
y por cierto, no olvides cerrar el buffer... alguna vez tuve un error muy feo por no cerrarlo... Ah y lo malo es que no puedes obtener el código de respuesta HTTP por lo que si por cualquier razon obtienes un error 500 del servidor te lanza una excepcion. SI hayas como obtener los codigos de respuesta seria bueno que lo publcaras.
respuesta HTTP
java.daba.doo o sea que no funciona el método
HttpUrlConnection.getResponseCode()
? Ojo, lo tienes que invocar ANTES degetInputStream()
.Re: respuesta HTTP
Cierto, en vez de solo usar
URLConnection
(como bien dice ezamudio) hay que usarHttpURLConnection
Deserializar JSON
Hola OscarRyz y java.daba.doo
Creo que no me supe explicar bien, obtengo el JSON desde la API de Google sin ningun problema con la API de Java IO, el problema que tengo es que el JSON que obtengo es demasiado grande y no he podido deserializarlo, he obtenido ya algunos otros pero muy sencillos.
Es aqui donde necesito su ayuda, en como debo estructurar las variables que recibiran los valores con GSON. Teniendo en cuenta que recibo el JSON de la sigueinte forma: ¿como seria el modo de deserializarlo?
"results" : [
{
"address_components" : [
{
"long_name" : "Cholula",
"short_name" : "Cholula",
"types" : [ "route" ]
},
{
"long_name" : "La Paz",
"short_name" : "La Paz",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Heroica Puebla de Zaragoza",
"short_name" : "Heroica Puebla de Zaragoza",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Puebla",
"short_name" : "PUE",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "México",
"short_name" : "MX",
"types" : [ "country", "political" ]
},
{
"long_name" : "72160",
"short_name" : "72160",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Cholula, La Paz, 72160 Puebla, PUE, México",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 19.05461770,
"lng" : -98.22511950000001
},
"southwest" : {
"lat" : 19.05343170,
"lng" : -98.22815570
}
},
"location" : {
"lat" : 19.05356190,
"lng" : -98.22651650
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : 19.05537368029150,
"lng" : -98.22511950000001
},
"southwest" : {
"lat" : 19.05267571970850,
"lng" : -98.22815570
}
}
},
"types" : [ "route" ]
}
],
"status" : "OK"
}
Agradesco su ayuda
salu2
Chécate ésta respuesta y éste
Chécate ésta respuesta y éste tema.
Gracias neko069, te comento
Gracias neko069, te comento que he revisado en Google, pero el problema esta en que no logro serializar el JSON antes posteado, lo he intentado con Listas y arrays pero no he conseguido nada, mi problema no es como deserealizar sino de hacerlo correctamente.
No se si peudan darme guia en como deserealizar consisamente el JSON publicado....
Gracias
Salu2
parser?
O sea lo que quieres es un parser de JSON? ya probaste jackson? o json-lib?
Hola ezamudio gracias por
Hola ezamudio gracias por atender al post
Te cuento que lo debo realizar forzosamente con GSON he trabajado con este en pequeños JSON de una sola linea pero el problema ocurre cuando debo entrar a Arrays. utilizaba Google Api pero lo he cambiado a uno de Yahoo.
http://developer.yahoo.com/geo/placefinder/guide/examples.html#json-form...
Cambie de servicio, pero sigo obteniendo un JSON con un array y no logro deserializarlo aca lo dejo para ver si alguien puede darme una mano, no importa si utilizan otro parser
{"version":"1.0",
"Error":0,
"ErrorMessage":"No error",
"Locale":"en_US",
"Quality":40,
"Found":1,
"Results":[
{"quality":40,
"latitude":"37.779160",
"longitude":"-122.420049",
"offsetlat":"37.779160",
"offsetlon":"-122.420049",
"radius":5000,
"name":"",
"line1":"",
"line2":"San Francisco,
CA",
"line3":"",
"line4":"United States",
"house":"",
"street":"",
"xstreet":"",
"unittype":"",
"unit":"",
"postal":"",
"neighborhood":"",
"city":"San Francisco",
"county":"San Francisco County",
"state":"California",
"country":"United States",
"countrycode":"US",
"statecode":"CA",
"countycode":"",
"uzip":"94102",
"hash":"C1D313AD706E3B3C",
"woeid":12587707,
"woetype":9}]
}
}