【问题标题】:json_decode help [duplicate]json_decode 帮助
【发布时间】:2011-08-03 18:56:12
【问题描述】:

我一直在尝试使用来自各种服务的一些 API,目前我试图在 vimeo 上检索有关视频的数据,

我已成功获取文件并读取了内容,但是,我不知道如何访问作为 .json 返回的文件的每个部分。

基本上,我如何使用 PHP 访问 json 文件中的数据

谢谢

【问题讨论】:

  • 为了帮助 json_decode 我使用了这个在线格式化程序,它可以更容易地阅读结构:bodurov.com/JsonFormatter

标签: php json api vimeo


【解决方案1】:

如果文件只是JSON,可以使用json_decode:

$data = json_decode(file_get_contents("url here"), true);

然后像普通的array 一样访问数据。当然,您必须知道您获得的数据的结构才能正确访问它。您也可以随时使用循环对其进行迭代。

如果数据以JSONP 传递,您必须先对其进行处理,以删除填充。 I created a function for that.

更新:

您在其中一个 cmets 中发布了指向 JSON 文件的链接:

$data->video

不起作用,因为

  1. $data 是一个数组。 $data[0]->something 会起作用
  2. video 不作为对象的属性存在。

发送print_r($data) 以查看结构。

【讨论】:

  • 我一直使用的代码是 $json_decoded = json_decode($content);回声 $json_decoded->视频; $content 变量是 JSON 文件...当我运行此页面时,我得到“尝试获取非对象的属性”
  • @nmyster:那么你应该检查$content 真正包含的内容。可能是 JSONP 或 JSON 语法错误。 json_last_error 将帮助您找出问题所在:php.net/manual/en/function.json-last-error.php
  • 设法解决了这个问题,我使用的是 $data -> thumbnail_medium,但我没有指定元素编号,所以我现在有 $data[0] -> thumbnail_medium 并且有效。
【解决方案2】:
$file_contents = file_get_contents("http://vimeo.com/api/v2/group/awesome/videos.json"), true);

使用以下方法将其读入变量:

$data = json_decode($file_contents);

然后您可以使用以下方式访问这些部分:

echo $data->id;
echo $data->title;

等等

只需使用print_r($data); 即可查看所有可用字段。

【讨论】:

  • $xmldata = 'vimeo.com/api/v2/video/22099921.json'; $open = fopen($xmldata,'r'); $content = stream_get_contents($open); $data = json_decode($content);回声 $data ->thumbnail_medium;是我的完整代码,它只是一个测试页面,我得到错误尝试获取非对象的属性。
  • 代替 echo $data->thumbnail_medium,使用:foreach($data as $val) { echo $val->thumbnail_medium; }
  • 设法解决了这个问题,我使用的是 $data -> thumbnail_medium,但我没有指定元素编号,所以我现在有 $data[0] -> thumbnail_medium 并且有效。
【解决方案3】:

你试过json_decode函数吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2011-06-20
    • 2011-07-28
    • 2011-10-04
    • 2011-11-27
    • 1970-01-01
    相关资源
    最近更新 更多