In diesem Artikel wird die Lösung für das Problem vorgestellt, dass PHP json_encode die privaten Eigenschaften von Objekten nicht unterstützt. Json_encode kann Objekte in das JSON-Format konvertieren und json_decode kann verwendet werden, um sie in Objekte wiederherzustellen.
Aber wenn das Objekt private Attribute enthält, gehen die privaten Attribute verloren nach der Ausführung von json_encode.
<?php// 用户类class user{ public $id = 1; public $name = 'fdipzone'; public $profession = 'programmer'; private $age = 18; }// 对象$oUser = new User;// json_encode$json = json_encode($oUser);echo $json;// json_decode$oUser = json_decode($json); var_dump($oUser);?>
Ausgabe:
{"id":1,"name":"fdipzone","profession":"programmer"}object(stdClass)[2] public 'id' => int 1 public 'name' => string 'fdipzone' (length=8) public 'profession' => string 'programmer' (length=10)
Nach der Ausführung von json_encode geht das Alter des privaten Attributs verloren.
Der geänderte Code lautet wie folgt:
<?php// 用户类class user implements JsonSerializable{ public $id = 1; public $name = 'fdipzone'; public $profession = 'programmer'; private $age = 18; // 实现的抽象类方法,指定需要被序列化JSON的数据 public function jsonSerialize() { $data = []; foreach ($this as $key=>$val){ if ($val !== null) $data[$key] = $val; } return $data; } }// 对象$oUser = new User;// json_encode$json = json_encode($oUser);echo $json;// json_decode$oUser = json_decode($json); var_dump($oUser);?>
Ausgabe :
{"id":1,"name":"fdipzone","profession":"programmer","age":18}object(stdClass)[2] public 'id' => int 1 public 'name' => string 'fdipzone' (length=8) public 'profession' => string 'programmer' (length=10) public 'age' => int 18
Nachdem die Daten angegeben wurden, die in JSON serialisiert werden müssen, kann json_encode das Alter des privaten Attributs lesen.
In diesem Artikel wird das relevante Wissen erläutert, dass PHP JSON_ENCODE keine privaten Objektattribute unterstützt. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Erläuterung zum Generieren eindeutiger RequestID-Klassenbezogener Inhalte durch PHP
Kapazitätsgröße der MySQL View-Datenbanktabelle
Detaillierte Erläuterung einer von PHP gekapselten Singleton-Modus-MySQL-Operationsklasse
Das obige ist der detaillierte Inhalt vonErläuterung dazu, dass PHP json_encode keine privaten Objektattribute unterstützt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!