我有这个课:
namespace backoffice\controller;
class MyObject{
private $id;
private $name;
}
我尝试将其转换为数组,然后转换为json数组:
$obj = new MyObject();
$obj->setId(1);
$obj->setName('Test');
json_encode((array)$obj);
我得到这样的结果:
{"backoffice\controller\MyObject\id":"1","backoffice\controller\MyObject\name":"Test"}
!!!! 编辑:
为什么我不能得到这个结果:
{"id":"1","name":"Test"}
而不是将其转换为数组(这将完成您意想不到的事情),而是MyObject
实现JsonSerializable接口。
namespace backoffice\controller;
class MyObject implements \JsonSerializable
{
private $id;
private $name;
public function jsonSerialize() {
return get_object_vars($this);
}
// setters
}
然后,您可以json_encode
直接使用它并获得所需的结果:
$obj = new MyObject;
$obj->setId(1);
$obj->setName('foo');
echo json_encode($obj); // {"id":1,"name":"foo"}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句