2013-03-12 45 views
-2

我有一個對象數組。如何json_decode對象數組?

$arr = array(0 => o1, 1 => o2); 

我爲此得到了正確的json_encode。我說,我有:

$json_data = json_encode($arr); 

但是,當我json_decode$json_data變量, 與第二個參數真我得到陣列格式的一切:

array(0 => array, 1 =>array) 

有第二個參數錯誤,我得到的對象格式的一切:

object(0 => object, 1 => object) 

如何獲取原始數組?即如何獲得

array(0 => object, 1 => object) 

編輯:解釋我的問題。當我們對對象數組進行json_encode時,如何在json_decode編碼數據時取回相同的對象數組?

回答

1

我嘗試下面的PHP 5.6.11-1ubuntu3.1(CLI)的代碼,並且出人意料地得到了正是我想要的。由於這個問題太舊了,我不記得在發佈這個代碼的時候我嘗試了這個PHP版本是什麼。

代碼:

<?php 
class Test { 
     public $message = "this is message"; 
     public $number = 10; 
} 
$t1 = new Test(); 
$t2 = new Test(); 
$arr = array(0 => $t1, 1 => $t2); 
$json_data = json_encode($arr); 
var_dump($json_data); 
$original_array = json_decode($json_data, true); 
$original_object = json_decode($json_data, false); 
var_dump($original_array); 
var_dump($original_object); 
?> 

我得到的輸出是:

string(85) "[{"message":"this is message","number":10},{"message":"this is message","number":10}]" 
array(2) { 
    [0]=> 
    array(2) { 
    ["message"]=> 
    string(15) "this is message" 
    ["number"]=> 
    int(10) 
    } 
    [1]=> 
    array(2) { 
    ["message"]=> 
    string(15) "this is message" 
    ["number"]=> 
    int(10) 
    } 
} 
array(2) { 
    [0]=> 
    object(stdClass)#3 (2) { 
    ["message"]=> 
    string(15) "this is message" 
    ["number"]=> 
    int(10) 
    } 
    [1]=> 
    object(stdClass)#4 (2) { 
    ["message"]=> 
    string(15) "this is message" 
    ["number"]=> 
    int(10) 
    } 
} 
0

試試這個:

$arr  = array(0 => "o1", 1 => "o2"); 

$json_data = json_encode($arr); 

$res  = json_decode($json_data, true); 

echo "<pre>"; 
print_r($res); 

輸出:

Array 
(
    [0] => o1 
    [1] => o2 
) 
+0

這是數組的數組。我想要的是對象數組。 – 2013-03-12 07:47:02

+0

如果輸入數組包含對象,你會得到它作爲對象 – 2013-03-12 07:48:51

+0

當我打電話json_decode只有一個參數(json_encoded數據)我得到的是: 陣列 ( [0] =>陣列 [1] =>陣列 ) – 2013-03-12 07:56:30