php - 如何使用 PHP 从 Rapid API 获取 JSON 数据
问题描述
我尝试从 API 获取 JSON 数据,但没有运气,关于这件事的任何帮助有什么问题。这是我的代码。
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://coronavirus-monitor.p.rapidapi.com/coronavirus/latest_stat_by_country.php?country=pakistan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"x-rapidapi-host: coronavirus-monitor.p.rapidapi.com",
"x-rapidapi-key: d1a16d6185msh28b0a37babf5f15p141020jsn35571bfb92c9"),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
}
else {
echo $response->latest_stat_by_country[0]->country_name . "</br>";
echo $response->latest_stat_by_country[0]->total_cases . "</br>";
echo $response->latest_stat_by_country[0]->new_cases . "</br>";
echo $response->latest_stat_by_country[0]->active_cases . "</br>";
}
解决方案
您正在访问$response
它,就好像它是一个数组一样,但它不是,它是 JSON。你需要json_decode($response)
首先:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://coronavirus-monitor.p.rapidapi.com/coronavirus/latest_stat_by_country.php?country=pakistan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"x-rapidapi-host: coronavirus-monitor.p.rapidapi.com",
"x-rapidapi-key: d1a16d6185msh28b0a37babf5f15p141020jsn35571bfb92c9"),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
// Changes made here:
$data = json_decode($response);
echo $data->latest_stat_by_country[0]->country_name . "</br>";
echo $data->latest_stat_by_country[0]->total_cases . "</br>";
echo $data->latest_stat_by_country[0]->new_cases . "</br>";
echo $data->latest_stat_by_country[0]->active_cases . "</br>";
}
推荐阅读
- javascript - 实现打开/关闭标签功能的最佳方式
- node.js - VSCode 并使用 launch.json 启动项目
- docker - 如何解决 VBoxManage 未找到问题
- swift4.2 - 方法 collectionView (didSelectItemAt...) 在 iTunesConnect 上不起作用;但是,它确实适用于调试
- java - 将对象添加到 ArrayList 的 ArrayList
- python - 使用行向量构造二维矩阵的最简单方法是什么?
- docker - 如何修复 Docker 中的 OCI 运行时执行失败的“执行格式错误”?
- regex - 如何从字符串Scala的前面和结尾删除引号
- php - 水平对齐多个表单输入
- c++ - 遍历列表以查找元素的出现。代码问题