2014-10-28 44 views
0

我得到的結果在對象,並希望轉換成json,我不明白如何做到這一點,所以我需要幫助。如何將對象數據轉換爲PHP中的json字符串?

object看起來是這樣的:

Array 
(
    [0] => stdClass Object 
     (
      [user_id] => 85 
      [username] => Chang Sindelar 
     ) 

    [1] => stdClass Object 
     (
      [user_id] => 84 
      [username] => Ezekiel Watterson 
     ) 

    [2] => stdClass Object 
     (
      [user_id] => 83 
      [username] => Sylvester Hillebrand 
     ) 
) 

我想轉換成字符串json。我需要像這樣的結果:

{"85":"Chang Sindelar","84":"Ezekiel Watterson","83":"Sylvester Hillebrand"} 

任何想法。

謝謝。

+1

你如何得到這個對象數據? – Gautam3164 2014-10-28 13:30:42

+0

@ Gautam3164我在PDO查詢中獲取這些數據。 – 2014-10-28 13:31:20

+0

只要您不想將json更改回對象,您可以使用PHP JsonSerializable接口:http://php.net/manual/en/class.jsonserializable.php – SenseException 2014-10-28 20:52:37

回答

0

type casting你可以改變他們進入陣列狀

$array = (array) $my_object; 

甚至可以用get_object_vars

$array = get_object_vars($my_object); 

或者從您的PDO查詢結果他們爲array

+1

請考慮我的編輯 – Gautam3164 2014-10-28 13:40:54

0

使用for環並使用json_encode創建一個新的向量(數組),例如:

$vector = array(); 
$size = count($obj); //$obj contain your "array" 
for ($i = 0; $i < $size; $i++) { 
    $vector[((string) $obj[$i]->user_id)] = $obj[$i]->username; 
} 

echo json_encode($vector); 
+0

注意:未定義的屬性:stdClass :: $ username_id的/ var/WWW/XXXX /應用/控制器/板。php on line 320 注意:未定義的屬性:stdClass :: $ username_id在320行上的/var/www/xxxx/application/controller/board.php – 2014-10-28 13:39:33

+0

@ Mr.Happy我編輯過,固定變量 – 2014-10-28 13:40:36

-1

對象不JSON編碼非常好,但您可以先將它轉換爲關聯數組,然後轉換爲JSON:例如,

$array = (array) $yourObject; 
$jsonstring = json_encode ($array) 
+0

「對象不JSON編碼非常好「是一個不精確和不明確的陳述。我不確定你的意思,所以我不能說你錯了。但你錯了。 – 2014-10-28 13:57:33

0

使用此函數會將您的對象返回到該對象的屬性數組中。

array get_object_vars (object $object) 
return get_object_vars($your_object_variable_here) 
0

嘗試

foreach($arr as $v) { 
$newarr[$v->user_id] = $v->username; 
} 
echo json_encode($newarr); 
0

你的問題是不是與JSON編碼,但你的對象屬性的關聯數組的映射。

映射你的對象到一個關聯數組可以使用array_reduce做到:

$array = [ 
    (object) ['user_id' => 85, 'username' => 'Chang Sindelar'], 
    (object) ['user_id' => 84, 'username' => 'Ezekiel Watterson'], 
    (object) ['user_id' => 83, 'username' => 'Sylvester Hillebrand'] 
]; 

$assoc = array_reduce($array, function($result, $item) { 
    $result[$item->user_id] = $item->username; 
    return $result; 
}, []); 

$assoc變量現在將舉行一個關聯數組是這樣的:

array(3) { 
    [85]=> 
    string(14) "Chang Sindelar" 
    [84]=> 
    string(17) "Ezekiel Watterson" 
    [83]=> 
    string(20) "Sylvester Hillebrand" 
} 

爲了讓您的JSON,只需運行$assocjson_encode

$json = json_encode($assoc); 
// {"85":"Chang Sindelar","84":"Ezekiel Watterson","83":"Sylvester Hillebrand"} 
相關問題