2015-10-16 52 views
0

我試圖從谷歌地圖獲取座標時,用戶輸入的地址(現在)的2個值的城市和street.Having麻煩的反序列化來自谷歌地圖API的JSON字符串。一定很簡單,請幫我解釋我失蹤的事情。jsonconvert.deserializeobject返回null

這裏是JSON字符串: http://pasted.co/d9e7c1de

我需要的結果/幾何形狀/位置/緯度, 結果/幾何形狀/位置/ LNG信息

這裏是我的代碼:

public class Geometry 
{ 
    [JsonProperty("bounds")] 
    public Bounds bounds { get; set; } 
    [JsonProperty("location")] 
    public Location location { get; set; } 
    [JsonProperty("location_type")] 
    public string location_type { get; set; } 
    [JsonProperty("viewport")] 
    public Viewport viewport { get; set; } 
} 

public class Result 
{ 
    public List<AddressComponent> address_components { get; set; } 
    public string formatted_address { get; set; } 
    public Geometry geometry { get; set; } 
    public bool partial_match { get; set; } 
    public string place_id { get; set; } 
    public List<string> types { get; set; } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    double coordinatesX = 0; 
    double coordinatesY = 0; 
    string APIKEY = "****************************"; 
    string MyAdres = TextBox1.Text + "," + TextBox2.Text; 
    string stringpath; 
    stringpath = "https://maps.googleapis.com/maps/api/geocode/json?address=" + MyAdres + "&key=" + APIKEY; 
    WebClient Web = new WebClient(); 
    string Jsonstring = Web.DownloadString(stringpath).ToString(); 
    Result m = JsonConvert.DeserializeObject<Result>(Jsonstring); 

    coordinatesX = m.geometry.location.lat; 
    coordinatesY = m.geometry.location.lng; 
} 

回答

1

您需要使用另一個頂級類來反序列化響應 試試這個:

public class Responce 
{ 
    public string status{get;set;} 
    public List<Result> results {get;set;} 
} 
... 
var responce = JsonConvert.DeserializeObject<Responce>(Jsonstring); 
DoSomething(responce.results); 
+0

這真的工作,我錯過了與根類:)解析 –