来自URL的JSON解码

时间:2011-07-04 11:52:35

标签: php json

我正在使用返回JSON字符串的API:

http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.9877644&lng=-1.47866&username=demo

我感兴趣的部分是城市/城镇名称(在本例中为Hook Norton),我想将其作为PHP变量。我理解JSON_decode()函数在某处发挥作用,但是如何访问API的输出?

3 个答案:

答案 0 :(得分:12)

试试这个。

$json = file_get_contents('http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.9877644&lng=-1.47866&username=demo');

$data = json_decode($json,true);

$Geonames = $data['geonames'][0];

echo "<pre>";

print_r($Geonames);

exit;

答案 1 :(得分:1)

最简单的方法是使用file_get_contents,它适用于Web文档和本地文件。例如:

$json = file_get_contents("http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.9877644&lng=-1.47866&username=demo");
$data = json_decode($json);
echo $data->geonames[0]->toponymName;

答案 2 :(得分:1)

由于JSON是HTTP响应的一部分,因此您需要使用PHP发出HTTP请求并以字符串形式获取响应。

这款瑞士刀是cURL,但是(根据你的要求和服务器的PHP配置),你很可能会这样做:

$json = file_get_contents('http://api.geonames.org/findNearbyPlaceNameJSON?lat=51.9877644&lng=-1.47866&username=demo');
$data = json_decode($json);
// and now access the data you need