0

你好我想解码json。我的代码如下:

<?php
$json = '{"response":{"count":1,"items":[{"id":165983743,"owner_id":170785079,"title":"Ke$ha - Blow","duration":253,"description":"","date":1379017507,"views":1,"comments":0,"photo_130":"http:\/\/cs518121.vk.me\/u170785079\/video\/s_5e5f6f2c.jpg","photo_320":"http:\/\/cs518121.vk.me\/u170785079\/video\/l_dd4ec237.jpg","files":{"mp4_240":"http:\/\/cs518121v4.vk.me\/u170785079\/videos\/500770e51c.240.mp4","mp4_360":"http:\/\/cs518121v4.vk.me\/u170785079\/videos\/500770e51c.360.mp4","mp4_480":"http:\/\/cs1-46v4.vk.me\/p13\/483502b20c4f.480.mp4","mp4_720":"http:\/\/cs518121v4.vk.me\/u170785079\/videos\/500770e51c.720.mp4"},"player":"http:\/\/vk.com\/video_ext.php?oid=170785079&id=165983743&hash=1e417a266e9a3f00"}]}}';

$obj = json_decode($json);
print_r ($obj);
print $obj->{'response'}->{'items'}->{'files'}->{'mp4_240'};

但我得到一个空白页

4

3 回答 3

1

print_r实际上应该打印一些东西 - 你的 json 是正确的。

你应该这样做:

print $obj->response->items[0]->files->mp4_240;

这是在 ideone 上工作的代码:http: //ideone.com/4xXfOl

编辑:请对这些答案投反对票的人,在评论中解释你为什么这样做......

于 2013-09-13T10:00:26.830 回答
1

首先你必须在你的 php 解释器上启用显示错误

ini_set('display_errors',1); 
error_reporting(E_ALL);

然后你必须更仔细地阅读你想要遍历的json的结构,作为数组的项目,实际上对象键对你说:item的复数形式,所以解决方案是:

print $obj->{'response'}->{'items'}[0]->{'files'}->{'mp4_240'};

当然我不喜欢这样的语法,最好使用

print $obj->response->items[0]->files->mp4_240;

程序选择动态访问属性时使用 $obj->{'prop_name'} 形式

于 2013-09-13T10:10:36.430 回答
0

我想你需要这个

echo $obj->response->items[0]->files->mp4_240;

代替print $obj->{'response'}->{'items'}->{'files'}->{'mp4_240'};

于 2013-09-13T10:00:18.287 回答