解析和读取来自Bing Maps REST服务的响应

时间:2018-11-28 12:37:59

标签: c# asp.net razor-pages

使用Bing Maps Rest Service查找地址的经度/纬度。我得到的响应还不错,但是我在使用正确的语法来引用long / lat字段时遇到了麻烦(请参见调试器的屏幕截图)。我已经尝试过

latitude = x.ResourceSets[0].Resources[0].GeocodePoints[0].Coordinates[0];

longitude = x.ResourceSets[0].Resources[0].GeocodePoints[0].Coordinates[1];

但是它们不编译。

这里是休息服务电话...(不在屏幕截图中)。

      private void GetResponse(Uri uri, Action<Response> callback)
  {
     System.Net.WebClient wc = new WebClient();
     wc.OpenReadCompleted += (o, a) =>
     {
        if (callback != null)
        {
           DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Response));
           callback(ser.ReadObject(a.Result) as Response);
        }
     };
     wc.OpenReadAsync(uri);
  }

Studio Debugging Screen Shot

1 个答案:

答案 0 :(得分:1)

根据您的屏幕快照,看来x.ResourceSets[0].Resources[0]的类型为Location,而该数组的基类为Resource。在访问值之前,尝试投射它:

var location = (Location)x.ResourceSets[0].Resources[0];
latitude = location.GeocodePoints[0].Coordinates[0];
longitude = location.GeocodePoints[0].Coordinates[1];