我使用和服制作了一个简单的api终点,用于提取阿肯色州水禽报告及其各自的发布日期。
我从Kimono获得以下api url:
curl --include --request GET "http://www.kimonolabs.com/api/e45oypq8?apikey=XXXXX"
因为我不熟悉如何使用cURL提取数据,所以我访问了网页并阅读了多篇文章,使用cURL从api中提取数据的教程。我觉得有大约100万种方法可以做到这一点。我花了太多时间在桌子上敲头。这就是我想出的:
<!DOCTYPE html>
<html>
<body>
<?php
$json_string = file_get_contents("http://www.kimonolabs.com/api/e45oypq8?apikey=XXX");
$parsed_json = json_decode($json_string);
$title = $parsed_json->{'results'}->{'collection1'}->{'title'};
$posted = $parsed_json->{'results'}->{'collection1'}->{'posted'};
echo "${title} \n ${posted}\n\n";
?>
</body>
</html>
api端点吐出以下内容(截断了问题的长度):
{
name: "agfc",
lastrunstatus: "success",
lastsuccess: "Fri Jan 17 2014 06:39:54 GMT+0000 (UTC)",
nextrun: "Sat Jan 18 2014 06:39:54 GMT+0000 (UTC)",
frequency: "daily",
newdata: true,
results: {
collection1: [
{
title: {
text: "January 8, 2014 Weekly Waterfowl Report",
href: "http://e2.ma/message/zgkue/nnlu0d"
},
posted: "1/8/2014"
}
]
}
我只是想从api端点获取所有数据,并且'echo''$ title'和'$ posted'链接到每个数据点的属性url('href')。
我确信有一种简单的方法可以做到这一点。我错过了什么。谢谢你的帮助。
答案 0 :(得分:2)
'collection1'是一个数组。
$title = $parsed_json->{'results'}->{'collection1'}[0]->{'title'}->text;
如果collection1包含多个元素,则必须循环遍历它们。
foreach ($parsed_json->{'results'}->{'collection1'} as $item) {
$title = $item->title->text;
$posted = $item->posted;
}
答案 1 :(得分:0)
使用curl的一种方法
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.kimonolabs.com/api/e45oypq8?apikey=xxxx");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$parsed_json = curl_exec($ch);
$parsed_json = json_decode($parsed_json);
foreach($parsed_json->results->collection1 as $collection){
echo $collection->title->text . '<br>';
echo $collection->title->href . '<br>';
echo $collection->posted . '<br><br>';
}
curl_close($ch);
?>
你做的另一件事
<?php
$json_string = file_get_contents("http://www.kimonolabs.com/api/e45oypq8?apikey=XXX");
$parsed_json = json_decode($json_string);
//var_dump($parsed_json->results->collection1);
foreach($parsed_json->results->collection1 as $collection){
echo $collection->title->text . '<br>';
echo $collection->title->href . '<br>';
echo $collection->posted . '<br><br>';
}
?>
答案 2 :(得分:0)
试试吧:
$json_string = file_get_contents("http://www.kimonolabs.com/api/e45oypq8?apikey=YOUR_API_KEY");
//json string to array
$parsed_arr = json_decode($json_string,true);
$collection1=$parsed_arr['results']['collection1'];
for($i=0;$i<count($collection1);$i++)
{
echo $collection1[$i]['title']['text']."--".$collection1[$i]['posted']."<br/>";
}