PHP:将对象转换为数组为我提供了带有命名空间的数组字段名称的索引


PHP: convert object to array gives me index of array field's name with namespace?

我有这个类:

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"}