我需要创建一个 PHP 类,该类将具有该类的多个父子关系,以便转换后的 JSON 字符串看起来与此类似。如果“children”为空数组,如何使其不出现在 JSON 中?{ name: "Element Parent", code: "000" children: [ { name: "Element Child 1" code: "001" children: [ { name: "Element Child 1A" code: "001A" }, { name: "Element Child 1B" code: "001B" children: [ { name: "Element Child 1BA" code: "001BA" } ] } ] } , { name: "Element Child 2" code: "002" } ]}我正在尝试创建一个可以转换为上面的 JSON 字符串的 PHP 类。<?phpclass Element implements \JsonSerializable{ private $name; private $code; public function __construct($name, $code, ) { $this->name = $name; $this->code = $code; } public function jsonSerialize() { return get_object_vars($this); } public function toJSON(){ return json_encode($this); } public $children[] = array(); // to contain Element children class }$element = new Element("Element Parent", 000);$elementChild1 = new Element("Element Child 1", "001");$elementChild1A = new Element("Element Child 1A", "001A");$elementChild1B = new Element("Element Child 1B", "001B");$elementChild1BA = new Element("Element Child 1BA", "001BA");$elementChild1B->children[] = $elementChild1BA;$elementChild1->children[] = $elementChild1A;$elementChild1->children[] = $elementChild1B;$element->children[] = elementChild1;$elementChild2 = new Element("Element Child 2", "002");$element->children[] = elementChild2;echo $element->toJSON();?>非常感谢。
1 回答
慕容森
TA贡献1853条经验 获得超18个赞
在jsonSerialize您实现的函数中,您可以更改序列化行为。在那里,您可以检查是否有儿童,并在需要时将其留在外面。在这种情况下,你最终会得到这样的结果:
public function jsonSerialize() {
$data = [
"name" => $this->name,
"code" => $this->code
];
if(!empty($this->children)) {
$data["children"] = $this->children;
}
return $data;
}
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报
0/150
提交
取消