Json 序列化时处理双向属性(如果两者都需要)

Json 序列化时处理双向属性(如果两者都需要),json,symfony,serialization,doctrine-orm,Json,Symfony,Serialization,Doctrine Orm,我有两个实体: 包含一些包的组织: /** * @ORM\OneToMany(targetEntity="Package", mappedBy="organization", cascade={"all"}) **/ private $packages; 以及属于某个组织的包: /** * * @var string @ORM\ManyToOne(targetEntity="Organization", i

我有两个实体:

包含一些包的组织:

/**
 * @ORM\OneToMany(targetEntity="Package", mappedBy="organization", cascade={"all"})
 **/
private $packages;
以及属于某个组织的包:

/**
 *
 * @var string @ORM\ManyToOne(targetEntity="Organization", inversedBy="packages", cascade={"all"})
 *      @ORM\JoinColumns({
 *      @ORM\JoinColumn(name="organization", referencedColumnName="id")
 *      })
 */
private $organization;
现在,我有两个用例:我想进入一个组织,所有包都是序列化的。但是我还需要显示包(也是序列化的),其中包含它所属的组织的信息

当我只是序列化结果时,比如说组织(包以相同的方式序列化):

我遇到的问题是,它将序列化组织,并获取所有包,在这些包中,它将获取对组织的搜索(该组织再次具有包含包的列表等等)。所以我遇到了一个无限循环

这样做有没有最佳实践?或者我要创建两个没有上面定义的属性的类,然后将其包装到该类中


我使用序列化方法来获取JSON格式的所有对象。

最后,我无缘无故地查看了
MaxDepth()
属性的Downvote,解决了我的问题。感谢那个浪费分数的人…:D
 // Serialize to json
    $serializer = new Serializer(array(
        new GetSetMethodNormalizer()
    ), array(
        'json' => new JsonEncoder()
    ));
    $json = $serializer->serialize($result, 'json');
    return $json;