將 PHP 物件序列化為 JSON 通常用於跨 Web 傳輸資料。然而,在 PHP 中實作這個功能
在PHP 中將物件轉換為JSON
在PHP 中將物件轉換為JSON
5.4<code class="php">function toArray($object) { $array = (array) $object; array_walk_recursive($array, function (&$property) { if ($property instanceof Mf_Data) { $property = $property->toArray(); } }); return $array; }</code>
但是,當物件引用其父級時,此方法會失敗,從而導致遞歸錯誤。刪除父引用可以解決此問題。
最終數組轉換解決方案<code class="php">function toArray($object) { $array = get_object_vars($object); unset($array['_parent'], $array['_index']); array_walk_recursive($array, function (&$property) { if (is_object($property) && method_exists($property, 'toArray')) { $property = $property->toArray(); } }); return $array; }</code>
這個實作使用get_object_vars() 取得物件的屬性,不包括_parent 和_index 屬性。
使用介面實作更簡潔的程式碼<code class="php">interface ToMapInterface { function toMap(); function getToMapProperties(); } class Node implements ToMapInterface { function toMap() { $array = $this->getToMapProperties(); array_walk_recursive($array, function (&$value) { if ($value instanceof ToMapInterface) { $value = $value->toMap(); } }); return $array; } function getToMapProperties() { return array_diff_key(get_object_vars($this), array_flip(['index', 'parent'])); } }</code>
以上是在 PHP 5.4 之前的版本中如何將 PHP 物件序列化為 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!