我正在使用PHP 5.2.x并希望仅对具有私有成员的自定义PHP类的对象进行编码。其中一个私有成员是另一个自定义类的对象数组。
我尝试了https://dev59.com/IGw05IYBdhLWcg3w0VKa#7005915中概述的解决方案,但显然不能递归地工作。唯一的解决方案是以某种方式扩展json_encode方法,以便调用类的版本而不是默认方法。
参考代码如下:
我尝试了https://dev59.com/IGw05IYBdhLWcg3w0VKa#7005915中概述的解决方案,但显然不能递归地工作。唯一的解决方案是以某种方式扩展json_encode方法,以便调用类的版本而不是默认方法。
参考代码如下:
Class A {
private $x;
private $y;
private $z;
private $xy;
private $yz;
private $zx;
public function f1() {
...
}
public function f2() {
...
}
.
.
.
public function getJSONEncode() {
return json_encode(get_object_vars($this));
}
}
class B {
private $p; //This finally stores objects of class A
private $q;
private $r;
public function __construct() {
$this->p = array();
}
public function fn1() {
...
}
public function fn2() {
...
}
.
.
.
public function getJSONEncode() {
return json_encode(get_object_vars($this));
}
}
class C {
private $arr;
public function __construct() {
$this->arr = array();
}
public function fillData($data) {
$obj = new B();
//create objects of class B and fill in values for all variables
array_push($this->arr, $obj)
}
public function returnData() {
echo $this->arr[0]->getJSONEncode(); //Edited to add
}
}
如何实现嵌套的json编码是最佳方式?
编辑添加:
当执行returnData方法时,我得到的输出结果为:
{"p":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],"q":"Lorem Ipsum","r":"Dolor Sit Amet"}
Class A { class PostAttributes {
是无效的..我不确定我完全理解你想要什么。 - Baba