【发布时间】:2012-09-28 22:46:46
【问题描述】:
我正在使用 PHP 5.2.x 并希望仅使用私有成员对我的自定义 PHP 类的对象进行编码。其中一个私有成员是另一个自定义类的对象数组。
我尝试了https://stackoverflow.com/a/7005915/17716 中概述的解决方案,但这显然不能递归地工作。我能看到的唯一解决方案是以某种方式扩展 json_encode 方法,以便调用 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"}
【问题讨论】:
-
我在这里没有看到任何嵌套的 json ..
Class A { class PostAttributes {无效.. 我不确定我是否完全得到你想要的 -
抱歉,感谢您接听。 “Class PostAttributes {”是复制粘贴错误。还添加了数组 P 包含 A 类对象的注释
-
你到底在执行什么......它不在上面的代码中
-
您的代码格式有点偏离。
-
@Baba:不确定我是否理解您的问题...您能详细说明一下吗?