【问题标题】:How can PHP pull the JSON data from VIMEO API and print it on XML file?PHP 如何从 VIMEO API 中提取 JSON 数据并将其打印到 XML 文件中?
【发布时间】:2020-12-17 04:21:57
【问题描述】:

我正在调用以下 Vimeo API 来返回特定视频下的所有视频。我试图实现的是只提取我想要的特定 JSON 数据。 “uri”和“name”是我需要的唯一数据。以及如何将这个东西打印到 XML 文件中? https://developer.vimeo.com/api/reference/folders#get_project_videos

顺便说一句,这是我的尝试:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
      <?PHP

      header('Content-Type: text/html; charset=utf-8');
      require ("vendor/autoload.php");
      use Vimeo\Vimeo;

      $client = new Vimeo("{client_id}", "{client_secret}", "{access_token}");

      $user_id = '121265018';
      $project_id = '2370434';
      $response = $client- 
      >request("/users/$user_id/projects/$project_id/videos");

   var_dump($response);
   if ($response['status'] === 200) {
   $videos = [];
   foreach ($response['data'] as $data) {
     $result = [
       //'uri' => $data['uri'],
       'name' => $data['name'],
       //'pictures' => $data['pictures'],
     ];
     $videos[] = $result;
   }

   echo json_encode($videos, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  } else {
    echo json_encode($response['body']['error']);
  }


   ?>

【问题讨论】:

  • header('Content-Type: application/json') 一开始就毫无意义。此时您已经创建了 HTML 输出。

标签: php json xml api vimeo


【解决方案1】:

您只需将这三样东西保存在一个单独的数组中,然后以您想要的格式打印。

更新

您的所有视频都有一组数据。 sow 你需要使用 foreach 来获取所有视频的 uri、名称和图片并保存在另一个数组中。

<body>
  <?PHP
  header('Content-Type: text/html; charset=utf-8');
  require("vendor/autoload.php");

  use Vimeo\Vimeo;


  $client = new Vimeo("{client_id}", "{client_secret}", "{access_token}");

  $user_id = '121265018';
  $project_id = '2370434';
  $response = $client->request("/users/$user_id/projects/$project_id/videos");
  if ($response['status'] === 200) {
    $videos = [];
    foreach ($response['body']['data'] as $data) {
      $result = [
        'uri' => $data['uri'],
        'name' => $data['name'],
        'pictures' => $data['pictures'],
      ];
      $videos[] = $result;
    }

    echo json_encode($videos, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  } else {
    echo json_encode($response['body']['error']);
  }
  ?>
</body>

【讨论】:

  • 注意:未定义索引:第 27 行 D:\XAMPP\htdocs\MyAPI\GP.php 中的 uri 注意:未定义索引:D:\XAMPP\htdocs\MyAPI\GP.php 中的名称第 28 行注意:未定义索引:第 29 行 D:\XAMPP\htdocs\MyAPI\GP.php 中的图片 {"uri":null,"name":null,"pictures":null}
  • 是不是因为URI、名称和图片在“数据”数组下??我已经用实际的 API JSON 数据更新了我的问题,以向您展示。但是
  • 我尝试了两种方法 1) 'uri' => $response['data']['uri'], 2) 'uri' => $response['body']['data' ]['uri'],但看起来它不起作用:(
  • 您需要知道您想要的密钥在哪里,提供var_dump($resquest); 并查找您的密钥位置,然后保存在另一个数组中。
  • 基于我上面代码的更改,你的意思是我应该使用 var_dump 来输出我的 JSON 数组? var_dump($response) ??
【解决方案2】:

我觉得你应该换行

 $jsondata = file_get_contents($response);

 $jsondata = $response['body'];

【讨论】:

  • 解析错误:语法错误,$json = json_decode($jsondata,true);
  • 添加;用 $jsondata 添加新行的结尾
  • 我认为是语法错误。因为即使在我添加之后;它显示 Parse error: syntax error, unexpected ';' (T_STRING) in D:\XAMPP\htdocs\MyAPI\GP.php on line 29
猜你喜欢
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 2016-03-18
相关资源
最近更新 更多