2016-02-11 72 views
2

我有这个类:
PHP的:将对象转换为数组给我的数组字段的名称与命名空间的索引?

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

什么是你的问题? – Daan

+0

@Daan对不起,我编辑了这个问题,请看看。 – SlimenTN

+0

,因为你使用的是命名空间......这就是为什么。 –

回答

2

相反,它转换成数组(which will do things you don't expect)的,有你的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"} 
+0

正是我在找的东西,谢谢非常。 – SlimenTN

相关问题