将单个实体转换为数组

时间:2014-01-20 09:57:32

标签: symfony

将Symfony2实体转换为数组的最有效方法是什么?实体包含带有setter / getters的受保护字段。是否可以使用JMSSerializer

4 个答案:

答案 0 :(得分:24)

使用此捆绑包是将实体转换为序列化格式的最有效方法。此外,它是由Sensio Labs推荐的。

要序列化您只需安装,配置此捆绑包然后:

$serializer = JMS\Serializer\SerializerBuilder::create()->build();
$serializer->serialize($object, 'json');

反序列化:

$serializer = JMS\Serializer\SerializerBuilder::create()->build();
$object = $serializer->deserialize($jsonData, 'MyNamespace\MyObject', 'json');

没有更多。

您还可以使用它将对象转换为数组:

$serializer = JMS\Serializer\SerializerBuilder::create()->build();
$array = $serializer->toArray($object);

此外,您可以使用序列化组阻止无限递归:

$serializer = JMS\Serializer\SerializerBuilder::create()->build();
$context = \JMS\Serializer\SerializationContext::create();
$context->setGroups($groups);
$serializer->serialize($object, 'json', $context);

此致

答案 1 :(得分:9)

使用JMSSerializer进行这么简单的任务对我来说似乎有些过分。我会用Symfony Serializer Component。该演示页面显示了如何将实体序列化为JSON。

如果你只想将它放到数组中,根本不需要序列化,你可以实例化GetSetMethodNormalizer并使用它,因为组件使用数组作为规范化格式。

答案 2 :(得分:2)

如果尚未安装Symfony序列化程序组件。

安装composer require symfony/serializer

然后将任何实体转换为数组,如下所示。

  $serializer = new Serializer(array(new ObjectNormalizer()));
 $data = $serializer->normalize($result, null, array('attributes' => 
   array('success','type','result','errorMessage')));

$ data = array:[“成功” =>真“ errorMessage” =>空“结果” =>“ 1”“类型” =>“ URL”]

答案 3 :(得分:0)

您还可以在实体本身中创建一个公共例程,这类似于序列化程序正在执行的操作。