2013-10-23 46 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