2012-12-05 28 views
1

我正在嘗試編寫PHP代碼來與Mapquest的Open API/Open Street Map服務的JSON輸出進行交互。我列在下面。我一直在我的Drupal 6實現中使用這段代碼。此代碼不返回任何輸出。當我使用它,json_last_error()輸出0JSON輸出映射數據使用json_decode()在php

function json_test_page() { 
    $url = 'http://open.mapquestapi.com/directions/v1/route?outFormat=json&from=40.037661,-76.305977&to=39.962532,-76.728099'; 
    $json = file_get_contents($url); 
    $obj = json_decode(var_export($json)); 
    $foo .= $obj->{'fuelUsed'}; 
    $output .= foo; 
    return $output; 
} 

可以通過following the URL查看原始JSON輸出。在這個函數中,我期望得到1.257899作爲我的輸出。我有兩個問題:

(1)我可以打電話給我什麼,以便讓我的物品脫離陣列。例如,我怎樣才能得到JSON "distance":26.923中表示的值? (2)是否有可能遇到遞歸極限問題,我已閱讀有關PHP Manual

回答

2

,你會發現還有就是你可以通過有一個參數(默認爲false)它返回一個數組而不是一個對象。

$obj = json_decode($json, true); 

所以:

<?php 

function json_test_page() { 
    $url = 'http://open.mapquestapi.com/directions/v1/route?outFormat=json&from=40.037661,-76.305977&to=39.962532,-76.728099'; 
    $json = file_get_contents($url); 
    $obj = json_decode($json, true); 
    //var_dump($obj); 
    echo $obj['route']['fuelUsed']; 
} 

json_test_page(); 
+0

這太好了。按預期工作。我知道'TRUE'參數,但我不知道是否最好使用'json_decode()'或其他方法解析數組。這似乎工作得很好。謝謝! – kevinaskevin

1

json_decode中刪除var_export功能。

您試圖將有關字符串的信息轉換爲json。

我能如果你仔細閱讀手冊頁json_decode得到fuelUsed財產這樣

function json_test_page() { 
    $url = 'http://open.mapquestapi.com/directions/v1/route?outFormat=json&from=40.037661,-76.305977&to=39.962532,-76.728099'; 
    $json = file_get_contents($url); 
    $obj = json_decode($json); 
    return $obj->route->fuelUsed; 
} 
+0

我同意這個答案,但是按照原來的問題,我提出的是得到一個數組回來的替代品。 – gview