2012-06-10 119 views
0

我有這個代碼JSON解析PHP和顯示內容

這是我的PHP與其他項目的合作問題......

$gas = file_get_contents('http://api.mygasfeed.com/stations/loadbygeo/47.9494949/120.23423432/reg|mid|pre|diesel/'. $api . '.json?callback=?'); 



$json_output = json_decode(utf8_decode($gas)); 

$location= $json_output->geoLocation->city_id; 

這是JSON結果

?({"status":{"error":"NO","code":200,"description":"none","message":"Request ok"},"geoLocation":{"city_id":"13123","city_long":"Hulunber","region_short":"Nei Mongol","region_long":"Nei Mongol","country_long":"China","country_id":"49","region_id":"6010"},"stations":[]}) 

此代碼返回空白結果。

+3

這不是JSON。這是JSONP。解碼前需要解開函數調用。 – mario

+0

你能澄清一下嗎?該URL不使用jsonp –

+1

@DavidMorin:是的,它的確如此。試試'?callback ='而不是'?callback =?'。 – Ryan

回答

0

您需要刪除?()。見WP:JSONP

人們可以使用substr()爲,或者更好的是一個正則表達式斷言和刪除只有所需的垃圾:

$json = preg_replace("/ ^[?\w(]+ | [)]+\s*$ /x", "", $jsonp); 

將消除任意callbackFnNames(也是你怪?(僞函數調用。

+0

$ gas = file_get_contents('http://api.mygasfeed.com/stations/loadbygeo/42.364632/-71.059227/reg|mid|pre|diesel/'。$ api。'.json?callback ='); $ parsed_json = json_decode($ gas); $ rest = substr(「'。$ parsed_json。'」,1,-1); $ location = $ rest - > {'geoLocation'} - > {'city_id'}; print $ location;前面提到的 –

+0

:「在**解碼之前需要解開函數調用**」。 – mario

+0

對不起,我想我不知道如何做到這一點...你能幫我嗎?告訴我在哪裏可以找到這份文件? –