【发布时间】:2018-01-13 16:55:05
【问题描述】:
我想将一个对象转换为 JSON,并且可以选择要转换的属性。
<?php
class MyObject
{
protected $id;
protected $name;
protected $sub1;
protected $sub2;
public function __construct($id, $name)
{
$this->id = $id;
$this->name = $name;
$this->sub1 = new MySubObject;
$this->sub2 = new MySubObject;
}
public function json(array $array)
{
$arrayJson = array();
foreach ($array as $value) {
$arrayJson[$value] = $this->////////// HERE /////// ;
}
return json_encode($arrayJson);
}
public function debug()
{
echo '<pre>';
var_dump($this);
echo '</pre>';
}
}
然后这样调用:
$MyObject= new MyObject(1, 'waffles');
$MyObject->debug();
echo $MyObject->json(array('id','name','sub1->x','sub2->z'));
调试输出:
object(Produto)#3 (3) {
["id":protected]=>
string(1) "1"
["name":protected]=>
string(6) "waffles"
["sub1":protected]=>
object(MySubObject)#3 (3) {
["x"]=>
1
["y"]=>
2
["z"]=>
3
}
["sub2":protected]=>
object(MySubObject)#3 (3) {
["x"]=>
1
["y"]=>
2
["z"]=>
3
}
}
我希望 JSON 的输出如下所示:
{ "id": 1, "name": "waffles", "sub1": {"x": 1}, "sub2": {"z": 3} }
我在计算“json”函数时遇到了麻烦,也许这不是最好的方法。或者您可以通过选择要转换的字段来判断是否有其他方法可以将对象转换为 JSON。
我忘了说对象中可以有子对象。
【问题讨论】: