Tengo una base de datos llena de direcciones que necesito obtener lat y long, así que quiero recorrerlas y usar Google Geocode para actualizar mi base de datos. Estoy atascado en cuanto a cómo analizar el resultado JSON para conseguir lo que necesito:parse google maps geocode json respuesta al objeto usando Json.Net
var address = "http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false";
var result = new System.Net.WebClient().DownloadString(address);
GoogleGeoCodeResponse test = JsonConvert.DeserializeObject<GoogleGeoCodeResponse>(result);
pensé que simplemente podría construir una clase rápida y utilizar JSON.Net deserializar el resultado, y es tipo de elaboración, pero Creo que estoy soplando en mi estructura de clases:
public class GoogleGeoCodeResponse {
public string status { get; set; }
public geometry geometry { get; set; }
}
public class geometry {
public string location_type { get; set; }
public location location { get; set; }
}
public class location {
public string lat {get;set;}
public string lng {get;set;}
}
aquí está una muestra de lo que está conseguir regresar de Google:
{
"status": "OK",
"results": [ {
"types": [ "street_address" ],
"formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"address_components": [ {
"long_name": "1600",
"short_name": "1600",
"types": [ "street_number" ]
}, {
"long_name": "Amphitheatre Pkwy",
"short_name": "Amphitheatre Pkwy",
"types": [ "route" ]
}, {
"long_name": "Mountain View",
"short_name": "Mountain View",
"types": [ "locality", "political" ]
}, {
"long_name": "California",
"short_name": "CA",
"types": [ "administrative_area_level_1", "political" ]
}, {
"long_name": "United States",
"short_name": "US",
"types": [ "country", "political" ]
}, {
"long_name": "94043",
"short_name": "94043",
"types": [ "postal_code" ]
} ],
"geometry": {
"location": {
"lat": 37.4219720,
"lng": -122.0841430
},
"location_type": "ROOFTOP",
"viewport": {
"southwest": {
"lat": 37.4188244,
"lng": -122.0872906
},
"northeast": {
"lat": 37.4251196,
"lng": -122.0809954
}
}
}
} ]
}
me falta simple aquí que lo sepa, nadie?
Su la estructura de datos funciona para mí, pero prefiero definir location.lat y location.lng como decimales. Asimismo, es más fácil tener enumeraciones para el estado de respuesta, los tipos de resultados y los tipos de ubicación. Json.NET deserializará las cadenas a las enumeraciones correctamente. – Mart
Esta línea "resultados públicos [] results {get; set;}" resolvió una publicación simultánea de dos horas. Nunca pensé en poner a otra clase un nivel por encima de la clase de resultados. Gracias. – TrueCoke
@antonio Cool y es el segundo en tomar datos gracias –