使用私有成員對PHP 物件進行JSON 編碼
PHP 的json_encode 函數提供了一種將物件序列提供了一種將物件序列提供了一個物件序列化為JSON 格式的便捷方法。但是,在處理儲存在私有類別成員中的資料時,它可能會出現問題。
要克服此限制,可以使用自訂編碼函數:
public function encodeJSON() { foreach ($this as $key => $value) { $json->$key = $value; } return json_encode($json); }
雖然此解決方案適用於對像如果沒有嵌套對象,則無法對主對像中的嵌套對象進行編碼。
解決方案:實作JsonSerialized介面
最有效的方法是實作JsonSerialized並定義一個jsonSerializejsonSerialize 方法應該會傳回需要序列化的資料。
class Item implements \JsonSerializable { private $var; private $var1; private $var2; // ... constructors and other methods ... public function jsonSerialize() { $vars = get_object_vars($this); return $vars; } }
JsonSerialized 後,json_encode 將正確序列化對象,包括任何嵌套對象。
以上是如何在 PHP 中使用 JSON 編碼來處理具有私有成員的物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!