json_encode,json_decode,array?

时间:2012-06-07 05:46:20

标签: php json

我正试图从

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

我一直在尝试,使用:

$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。我该怎么做?

提前致谢!

更新:很抱歉提及,我希望以json格式提供

最终,我想只看到

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

像thiat这样的东西

3 个答案:

答案 0 :(得分:2)

使用json_encode()获得您想要的内容:

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

答案 1 :(得分:1)

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

要在数组中访问,您可以执行以下操作:

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

您也可以根据需要为其编入索引:

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

修改

如果我说得对,你想把第一个JSON转换成这个:

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

如果是这样,那是不可能的,因为第二个片段是无效的JSON。 (使用http://jsonlint.com

答案 2 :(得分: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}
}