2017-08-09 137 views
0

我正在使用谷歌方向Api ......但我面臨着閱讀Json響應的問題......有人知道這個Api並可以幫助我嗎? 我需要獲取所有路線點以繪製我的折線......哪些數據很重要?我如何接收和解析它?解析谷歌方向json

這是一個JSON作爲例子

https://maps.googleapis.com/maps/api/directions/json?origin=-22.8895625,-47.0714089&destination=-22.892376,-47.027553&key=

我的代碼不能正常工作......

public static async Task<List<Model.Localizacao>> GetDirectionsAsync(Localizacao locUser, Localizacao locLoja) 
    { 
     using (var client = new HttpClient()) 
     { 
      try 
      { 
       List<Model.Localizacao> lstLoc = new List<Model.Localizacao>(); 
       var json = await client.GetStringAsync("https://maps.googleapis.com/maps/api/directions/json?origin=" + locUser.latitude + "," + locUser.longitude + "&destination="+ locLoja.latitude+","+locLoja.longitude+"&key="+ GOOGLEMAPSKEY); 

       // json = json.Substring(json.IndexOf('[')); 
       // json = json.Substring(0, json.LastIndexOf(']') + 1); 
       lstLoc = JsonConvert.DeserializeObject<List<Model.Localizacao>>(json); 
       return lstLoc; 
      } 
      catch (Exception ex) 
      { 
       Debug.WriteLine(ex.Message); 
       return null; 
      } 
     } 
    } 

我真的需要幫助 我已搜查,並在不是招結果」 T還幫我 它的一個Xamarin表格項目 謝謝

回答

0

不要嘗試拉出部分json,反序列化整個事物並從C#對象圖中獲取所需的數據。

您可以使用json2csharp.com來生成C#類結構。

我在你鏈接到JSON粘貼和它生成以下:

public class GeocodedWaypoint 
{ 
    public string geocoder_status { get; set; } 
    public string place_id { get; set; } 
    public List<string> types { get; set; } 
} 

public class Northeast 
{ 
    public double lat { get; set; } 
    public double lng { get; set; } 
} 

public class Southwest 
{ 
    public double lat { get; set; } 
    public double lng { get; set; } 
} 

public class Bounds 
{ 
    public Northeast northeast { get; set; } 
    public Southwest southwest { get; set; } 
} 

public class Distance 
{ 
    public string text { get; set; } 
    public int value { get; set; } 
} 

public class Duration 
{ 
    public string text { get; set; } 
    public int value { get; set; } 
} 

public class EndLocation 
{ 
    public double lat { get; set; } 
    public double lng { get; set; } 
} 

public class StartLocation 
{ 
    public double lat { get; set; } 
    public double lng { get; set; } 
} 

public class Distance2 
{ 
    public string text { get; set; } 
    public int value { get; set; } 
} 

public class Duration2 
{ 
    public string text { get; set; } 
    public int value { get; set; } 
} 

public class EndLocation2 
{ 
    public double lat { get; set; } 
    public double lng { get; set; } 
} 

public class Polyline 
{ 
    public string points { get; set; } 
} 

public class StartLocation2 
{ 
    public double lat { get; set; } 
    public double lng { get; set; } 
} 

public class Step 
{ 
    public Distance2 distance { get; set; } 
    public Duration2 duration { get; set; } 
    public EndLocation2 end_location { get; set; } 
    public string html_instructions { get; set; } 
    public Polyline polyline { get; set; } 
    public StartLocation2 start_location { get; set; } 
    public string travel_mode { get; set; } 
    public string maneuver { get; set; } 
} 

public class Leg 
{ 
    public Distance distance { get; set; } 
    public Duration duration { get; set; } 
    public string end_address { get; set; } 
    public EndLocation end_location { get; set; } 
    public string start_address { get; set; } 
    public StartLocation start_location { get; set; } 
    public List<Step> steps { get; set; } 
    public List<object> traffic_speed_entry { get; set; } 
    public List<object> via_waypoint { get; set; } 
} 

public class OverviewPolyline 
{ 
    public string points { get; set; } 
} 

public class Route 
{ 
    public Bounds bounds { get; set; } 
    public string copyrights { get; set; } 
    public List<Leg> legs { get; set; } 
    public OverviewPolyline overview_polyline { get; set; } 
    public string summary { get; set; } 
    public List<object> warnings { get; set; } 
    public List<object> waypoint_order { get; set; } 
} 

public class RootObject 
{ 
    public List<GeocodedWaypoint> geocoded_waypoints { get; set; } 
    public List<Route> routes { get; set; } 
    public string status { get; set; } 
}