2012-06-07 57 views
2

我试图从json_encode,json_decode,数组?

{ 
    "data": [{ 
     "media_count": 3045, 
     "name": "snow", 
    }, 
    { 
     "media_count": 79, 
     "name": "snowman", 
    }, 
    { 
     "media_count": 40, 
     "name": "snowday", 
    }, 
    { 
     "media_count": 29, 
     "name": "snowy", 
    }] 
} 

进入刚刚data我一直很努力,使用:

$obj = json_decode($res[0], true); 
echo $obj['data']; //this returns an array 

我也试过这样:

$obj = json_encode($res[0], true); 
echo $obj; // this returns json, but not inside `data` 

"data": [{ 
"media_count":54373, 
"name":"test" 
}] 

我只是想进入data。我会怎么做?

在此先感谢!

UPDATE:对不起提了,我想这个JSON格式请

最后,我想只能看到

{ 
    "media_count":54373, 
    "name":"test" 
} 

喜欢的东西thiat

+0

顺便说一句,你原来的JSON,因为它的立场,是无效的,由于尾随逗号。 – xbonez

回答

2

使用json_encode()得到你想要的东西:

$obj = json_decode($res[0], true); 
echo json_encode($obj['data']); 
+0

感谢的大小,得到的答案我一直在寻找对于 – hellomello

1

在你的第一个例子,$obj['data']返回一个数组,因为这就是JSON的设置方式。根据JSON,数据是一组元素。

阵列内访问,你可以这样做:

foreach($obj['data'] as $object) { 
    print_r($object); 
} 

您还可以索引到它,只要你想:

print_r($obj['data'][0]);

编辑

如果我“M让你改正,你要第一个JSON转换到这一点:

"data": [{ 
"media_count":54373, 
"name":"test" 
}] 

如果是这样,由于第二片段不是有效的JSON这是不可能的。 (使用http://jsonlint.com

+0

但我需要它以JSON格式 – hellomello

+0

@andrewliu:看到编辑 – xbonez

+0

我想唯一索引'data'所以基本上,当你呼应新JSON,'data'应不应该存在。 – hellomello

0

首先访问JSON数组的数据项;

$obj1=$obj[item]; 
    $sizeobj=sizeof($obj1); 

    for($i=0;$i<$sizeobj;$i++) 
{ 
// your code to access the data items 
// for eg $obj[item][$i][media_count} 
} 
+0

所以,如果我尝试'$ OBJ1 = $的obj [“数据”]',我得到这个'“' – hellomello

+0

$ OBJ1是不能访问它仅仅是找到了‘数据’ – Shiven