2013-10-23 86 views
2

如何將數組轉換爲Doctrine中的JSON?如何在Doctrine中編碼JSON數組?

到目前爲止,我已經試過this.Here是我的代碼:

require_once ("../Users.php"); 
require_once("../../test/doctrine/cli-config.php"); 
require_once "../../test/doctrine/bootstrap.php"; 

      $user_list = array(); 

      $usersRepository = $entityManager->getRepository('Users'); 

      $users = $usersRepository->findAll(); 

      echo "<pre>"; 
      print_r($users); 

      foreach ($users as $user) 
      { 
       $user_list[] = array('user_list'=>$user); 
      } 


    json_encode($user_list) 

的的print_r()部分返回我:

Array 
(
    [0] => Users Object 
     (
      [id:Users:private] => 1 
      [lastName:Users:private] => User1 
      [firstName:Users:private] => Test1 
      [city:Users:private] => ABC 
      [country:Users:private] => XYZ 
      [email:Users:private] => [email protected] 
     ) 

    [1] => Users Object 
     (
      [id:Users:private] => 2 
      [lastName:Users:private] => User2 
      [firstName:Users:private] => Test1 
      [city:Users:private] => ABC 
      [country:Users:private] => XYZ 
      [email:Users:private] => [email protected] 
     ) 

) 
[{"user_list":{}},{"user_list":{}}] 

看到JSON響應爲空。任何人都可以幫助我嗎?

+2

我推薦使用[** JMS /串行**](https://github.com/schmittjoh/serializer)導出您的實體 – Touki

+0

@Touki我得到這些錯誤 未定義的變量:序列化程序 致命錯誤:調用非對象的成員函數serialize() –

+0

請花時間正確地[閱讀文檔](http://jmsyst.com/libs/serializer),然後轉到[搜索你的錯誤](http://stackoverflow.com/a/12769983/1607098)。我很確定你沒有遵循安裝步驟,這就是爲什麼你得到這個錯誤。 – Touki

回答

4

你的實體中沒有公共屬性...這就是爲什麼你得到一個空的JSON。

我爲此目的使用EntitySerializer

用途爲你的情況應該是:

$eSerializer = new Bgy\Doctrine\EntitySerializer($entityManager); 
$result = $eSerializer->toArray($users); 

,但是這僅僅是個人喜好。 你可以一應使用標準Serializer class of Symfony framework

+0

我是否必須將這個庫包含在某處? –

+0

這裏是文檔:http://borisguery.github.io/bgylibrary/ – Udan

+0

我更新了答案給你更多選擇 – Udan