我有一个充满地址的数据库,我需要获取经纬度,并且需要很长一段时间,因此我想遍历它们并使用Google Geocode更新我的数据库。我对如何解析JSOn结果以获取所需信息感到困惑:
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);
我以为我可以简单地建立一个快速的类,并使用JSON.Net对结果进行反序列化,这是可行的,但是我想在类结构中使用它:
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;} }
以下是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 } } } } ] }
我在这里想念简单,有人吗?
我尝试了一下,做了一个简单的测试,并成功了(增加了结果和其他):
public class GoogleGeoCodeResponse { public string status { get; set; } public results[] results { get; set; } } public class results { public string formatted_address { get; set; } public geometry geometry { get; set; } public string[] types { get; set; } public address_component[] address_components { 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; } } public class address_component { public string long_name { get; set; } public string short_name { get; set; } public string[] types { get; set; } }