2016-02-11 21 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

相關問題