2012-06-07 59 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