2016-06-16 6 views
0

Первый раз работая с JSON и связанной с ними, я пытаюсь получить расстояние/продолжительность всех возможных маршрутов из этого запроса: https://maps.googleapis.com/maps/api/directions/json?origin=41.2091585,-8.5763016&destination=41.258913,-8.636942&mode=driving&alternatives=true&avoid=tolls&language=pt-PT&key=AIzaSyDuhdvLAny3MpraXKX-bahkXZJolm7KLbEDeserialize Google Направление JSON

я получил следующие классы с помощью «Вставить JSON в классах» и создать один класс для каждого из них следующие:

public class Rootobject 
    { 
     public Geocoded_Waypoints[] geocoded_waypoints { get; set; } 
     public Route[] routes { get; set; } 
     public string status { get; set; } 
    } 

public class Route 
    { 
     public Bounds bounds { get; set; } 
     public string copyrights { get; set; } 
     public Leg[] legs { get; set; } 
     public Overview_Polyline overview_polyline { get; set; } 
     public string summary { get; set; } 
     public object[] warnings { get; set; } 
     public object[] waypoint_order { get; set; } 
    } 

public class Leg 
    { 
     public Distance distance { get; set; } 
     public Duration duration { get; set; } 
     public string end_address { get; set; } 
     public End_Location end_location { get; set; } 
     public string start_address { get; set; } 
     public Start_Location start_location { get; set; } 
     public Step[] steps { get; set; } 
     public object[] traffic_speed_entry { get; set; } 
     public Via_Waypoint[] via_waypoint { 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; } 
} 

для запроса упомянутой выше у меня есть 3 разных маршрутов (так называемые «ножки»), и я хочу, чтобы получить расстояние/продолжительность каждого из них.
Я придумал следующее, но это не работает.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(query); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
using (var streamReader = new StreamReader(response.GetResponseStream())) 
{ 
    var result = streamReader.ReadToEnd(); 

    if (!string.IsNullOrEmpty(result)) 
    { 
     Distance t = JsonConvert.DeserializeObject<Distance>(result); 
     string distance1_Value = t.value; 
     string distance1_Text = t.text; 

     Duration d = JsonConvert.DeserializeObject<Duration>(result); 
     string duration1_Value = d.value; 
     string duration1_Value = d.text; 
    } 
} 

Любая помощь?
PS: Если кто-нибудь может показать мне, как итерации бросать каждую «ногу», это было бы здорово.

EDIT: Забыл упомянуть, что я использую Newtonsoft.

+0

Вы забыли описать * не работает *. Ваш компьютер взорвался? –

+1

Но вы должны попытаться десериализовать результат в Rootobject. Не существует способа автоматического зависания объекта json, вложенного где-то в результат –

+0

@SirRufo, как это сделать? EDIT: Хорошо, я начну с Rootobject, я думал, что смогу сделать это именно так. Итак, нуб. – iamdlm

ответ

1

Я нашел решение несколько дней назад ...

Во-первых, я сделать то же самое из вас, но до сих пор не работает для меня, поэтому я взглянуть глубоко внутри классов авто, порожденного этим инструментом и обратите внимание, что некоторым классам не хватало 's' в конце своих имен. Шаг, где правильное название «Шаги» Нога. правильное название «Ноги» Маршрут. правильное имя «Маршруты»

Вам нужно исправить это на весь документ. После этого, вы можете конвертировать непосредственно ...

Взгляните на правильный ответ: [1]: http://pastie.org/10935748#9

 Смежные вопросы

  • Нет связанных вопросов^_^