从JSON数组中获取值

时间:2013-12-07 13:48:11

标签: php json

我正在使用 Mapquest 来尝试获取所请求地址的纬度和经度值。

这是我对他们的API的调用:

$json = file_get_contents('http://www.mapquestapi.com/geocoding/v1/address?key=******&callback=renderOptions&outFormat=json&inFormat=json&json={location:{street:"Lancaster,PA"},options:{thumbMaps:false}}');

$output = json_decode($json, true);

$lat = $output['results'][0]['locations'][0]['latLng']['lat'];
$lng = $output['results'][0]['locations'][0]['latLng']['lng'];

echo $lat.",".$lng;

正如您所看到的,我正在尝试将LATLNG回显到屏幕,但它是空的。当我print_r($json)时,我得到以下内容:

  

renderOptions({ “结果”:[{ “位置”:[{ “的latLng”:{ “LNG”: - 76.30127, “LAT”:40.03804}, “adminArea4”:“兰开斯特   县”, “adminArea5Type”: “城” ...............

所以我知道响应没问题且LATLNG可用,但是如果我print_r($output)我什么都没得到,如果我var_dump($output)我得到NULL,并且显然我没有得到我的LAT LNG数据。

我对JSON和数组不太满意。有人能看出我做错了吗?

1 个答案:

答案 0 :(得分:2)

您需要从网址中删除&callback=renderOptions。现在,服务器返回JSON P (具有指定的回调函数)。这不是有效的JSON,因此json_decode返回NULL(如手册中所述)