在PHP 中使用JSON 編碼私有類別成員
在PHP 中,當類別成員是私有的時,將類別成員編碼為JSON 可能會很棘手。考慮一下您希望對包含私有成員的物件資料進行編碼的場景。
最初,可以嘗試透過使用自訂的encodeJSON函數來手動提取和編碼私有變數來克服此障礙:
public function encodeJSON() { foreach ($this as $key => $value) { $json->key = $value; } return json_encode($json); }
但是,當物件在其成員中包含嵌套對象時,這種方法就會失效。為了解決這個問題,需要一個更全面的解決方案。
JsonSerialized 解決方案
序列化具有私有屬性的物件的優雅方法是透過 JsonSerialized 介面。透過實作此接口,您可以定義自訂 JsonSerialize 方法來控制序列化傳回的資料:
class Item implements \JsonSerializable { private $var; private $var1; private $var2; public function __construct() { // ... } public function jsonSerialize() { $vars = get_object_vars($this); return $vars; } }
透過此實現,json_encode 現在可以正確序列化您的物件及其私有和公用資料。
以上是如何在 PHP 中將私有類別成員編碼為 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!