JSON解析PHP和显示内容
我有这个代码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":[]})
此代码返回空白结果。
您需要删除?(
和)
。见WP:JSONP。
人们可以使用substr()
为,或者更好的是一个正则表达式断言和删除只有所需的垃圾:
$json = preg_replace("/ ^[?\w(]+ | [)]+\s*$ /x", "", $jsonp);
将消除任意callbackFnNames(
也是你怪?(
伪函数调用。
$ 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;前面提到的 –
:“在**解码之前需要解开函数调用**”。 – mario
对不起,我想我不知道如何做到这一点...你能帮我吗?告诉我在哪里可以找到这份文件? –
这不是JSON。这是JSONP。解码前需要解开函数调用。 – mario
你能澄清一下吗?该URL不使用jsonp –
@DavidMorin:是的,它的确如此。试试'?callback ='而不是'?callback =?'。 – Ryan