iT邦幫忙

1

PHP抓取政府 JSON 資料

Kai 2021-08-10 13:41:322069 瀏覽
  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20210810/20114642S4LPJfwqPC.jpg

我想抓取上方這張圖裡面的資料
有上網查一些資訊.但是怎麼改echo不出資料
不然就是出現錯誤..想請問該怎麼foreach...

附上程式碼,也是參考版上其他大大的程式

header('Content-Type: text/html; charset=utf-8');

$handle = fopen("https://data.ntpc.gov.tw/api/datasets/ACCE802D-58CC-4DFF-9E7A-9ECC517F78BE/json/preview","rb");
$content = "";

while (!feof($handle)) {
    $content .= fread($handle, 10000);
}

fclose($handle);
$content = json_decode($content,true);

foreach($content as $key => $locate)
{
    echo $key;
}
wrxue iT邦好手 1 級 ‧ 2021-08-10 13:46:38 檢舉
要不要試試將 eche 改為 echo 看看
Kai iT邦新手 5 級 ‧ 2021-08-10 13:53:01 檢舉
發問的時候打錯了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
screenleon
iT邦新手 1 級 ‧ 2021-08-10 14:51:41
最佳解答
$handle = fopen("https://data.ntpc.gov.tw/api/datasets/ACCE802D-58CC-4DFF-9E7A-9ECC517F78BE/json/preview","rb");
$content = "";

while (!feof($handle)) {
    $content .= fread($handle, 10000);
}

fclose($handle);
$content = json_decode($content);

foreach($content as $element) {
    foreach($element as $key => $value) {
        echo $key . ': ' . $value . PHP_EOL;
    }
}

因為他的json是用陣列包起來的
所以需要逐一拆解

Kai iT邦新手 5 級 ‧ 2021-08-10 15:28:19 檢舉

非常感謝您 可以囉

0
firecold
iT邦新手 1 級 ‧ 2021-08-10 14:03:44

$data = json_decode($response);

然後再抓陣列資料做運用

Kai iT邦新手 5 級 ‧ 2021-08-10 14:25:13 檢舉

好的 我試試看

Kai iT邦新手 5 級 ‧ 2021-08-10 14:36:00 檢舉

還是不行,會有錯誤 我有附上程式碼

0
Hankz
iT邦新手 2 級 ‧ 2021-08-10 14:48:03

如果只是get的話

$url = 'https://data.ntpc.gov.tw/api/datasets/ACCE802D-58CC-4DFF-9E7A-9ECC517F78BE/json/preview';
$json = file_get_contents($url);
var_dump(json_decode($json));
Hankz iT邦新手 2 級 ‧ 2021-08-10 14:49:40 檢舉

結果如下
https://ithelp.ithome.com.tw/upload/images/20210810/20139878k8hLhykuKa.png

1
japhenchen
iT邦超人 1 級 ‧ 2021-08-10 14:57:23
<?php
header('Content-Type: text/html; charset=utf-8');

$handle = fopen("https://data.ntpc.gov.tw/api/datasets/ACCE802D-58CC-4DFF-9E7A-9ECC517F78BE/json/preview","rb");
$content = "";

while (!feof($handle)) {
    $content .= fread($handle, 10000);
}

fclose($handle);
$content = json_decode($content,true);

//資料看起來有兩層,第一層沒有KEY所以不用顯示,第二層用列舉的,把 KEY 跟 VALUE並排即可,以下用ul li排版
foreach($content as $key => $locate)
{
    echo "<ul>";
    foreach($locate as $k2 => $v2)
    {
        echo "<li>$k2 => $v2</li>";
    }
    echo "</ul>";
}
?>

https://ithelp.ithome.com.tw/upload/images/20210810/20117954aQZEtAgg1J.jpg

Kai iT邦新手 5 級 ‧ 2021-08-10 15:28:25 檢舉

非常感謝您 可以囉~

我要發表回答

立即登入回答