0

我通过 product_id 请求产品时间,我得到了所有产品时间的完整列表,而不是只得到一个响应。

var productID = "37a94557-682f-4562-ba62-2448f80d3ddd" ;
    $http({
      url: "https://api.uber.com/v1/estimates/time" ,
      headers: {
          Authorization: "Token " + uberServerToken
        },
      params: {
          start_latitude: setLat,
          start_longitude: setLon,
          product_id: productID
        }
      }).success(function(data, status, headers, config) {
            uberTimes = data["times"] ;
            uberTime = Math.round(uberTimes[0].estimate / 60) ;
}) ;

目前,我得到的回应是:

times: [{localized_display_name:uberX, estimate:455, display_name:uberX,…},…]     
   0: {localized_display_name:uberX, estimate:455, display_name:uberX,…}
     display_name: "uberX" 
     estimate: 455 
     localized_display_name: "uberX" 
     product_id: "37a94557-682f-4562-ba62-2448f80d3ddd" 

   1: {localized_display_name:uberXL, estimate:455, display_name:uberXL,…}
     display_name: "uberXL" 
     estimate: 455 
     localized_display_name: "uberXL" 
     product_id: "aa0109f3-15db-45ca-b0cc-5019e8557792"

1:我假设我只会得到一个产品时间信息,因为我使用了可选的“product_id”,为什么我会得到多个产品时间?

2:同样,假设我只能获得单个产品时间,我是否仍会以相同的方式访问它:“uberTimes[0].estimate”?

4

1 回答 1

1

product_id可选参数不能正确过滤结果。这是 Uber API 的一个已知错误。为了检索正确的estimate,您应该处理 JSON 响应并通过 匹配product_id,例如:

var myEstimate; 
for result in results {
    if result["product_id"] == product_id {
        myEstimate = result["estimate"];
    }
}

您不能仅按 0 索引(uberTimes[0].estimate在您的示例中),因为响应不保证结果的顺序。

于 2015-05-19T19:13:00.393 回答