如何反序列化http Web响应

时间:2014-07-10 06:04:00

标签: json serialization deserialization httpwebresponse javascriptserializer

我已经使用谷歌API来获取 asp.net 应用程序中两个区域之间的距离。

将结果显示为休闲

{
   "destination_addresses" : [ "Dhantoli, Nagpur, Maharashtra, India" ],
   "origin_addresses" : [ "Khamla, Nagpur, Maharashtra, India" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "4.2 km",
                  "value" : 4214
               },
               "duration" : {
                  "text" : "8 mins",
                  "value" : 467
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

我已经用字符串收集它并尝试获取距离文本(这是我需要的)

因为我尝试了不起作用的休息代码

DistanceMatrix data = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<DistanceMatrix>(dataString);

dataString是API的结果

public class DistanceMatrix {
    public string destination_addresses { get; set; }
    public string origin_addresses { get; set; }
    public Element rows { get; set; }
    public string status { get; set; }
}
public class Element {
    public Data distance { get; set; }
    public Data duration { get; set; }
    public string status { get; set; }
}
public class Data {
   public string text { get; set; }
   public string value { get; set; }
}

请帮我从API结果中获取距离文字。

1 个答案:

答案 0 :(得分:0)

使用google distance matrix api的XML api。而不是使用json方法。

返回xml响应将其收集在字符串中并将其解析为休闲。

XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(dataString);
if (xmldoc.GetElementsByTagName("status")[0].ChildNodes[0].InnerText == "OK")
{
     XmlNodeList distance = xmldoc.GetElementsByTagName("distance");
}