首页 > 解决方案 > 如何使用 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>";
   }

标签: phparraysjsonapi

解决方案


您正在访问$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>";
}

推荐阅读