Как кодировать объекты Doctrine в JSON в приложении Symfony 2.0 AJAX?

Я разрабатываю игровое приложение и использую Symfony 2.0. У меня много запросов AJAX к бэкэнду. И больше ответов - это преобразование объекта в JSON. Например:

class DefaultController extends Controller
{           
    public function launchAction()
    {   
        $user = $this->getDoctrine()
                     ->getRepository('UserBundle:User')                
                     ->find($id);

        // encode user to json format
        $userDataAsJson = $this->encodeUserDataToJson($user);
        return array(
            'userDataAsJson' => $userDataAsJson
        );            
    }

    private function encodeUserDataToJson(User $user)
    {
        $userData = array(
            'id' => $user->getId(),
            'profile' => array(
                'nickname' => $user->getProfile()->getNickname()
            )
        );

        $jsonEncoder = new JsonEncoder();        
        return $jsonEncoder->encode($userData, $format = 'json');
    }
}

И все мои контроллеры делают одно и то же: получают объект и кодируют некоторые из его полей в JSON. Я знаю, что могу использовать нормализаторы и кодировать все права. Но что, если у объекта есть циклические ссылки на другой объект? Или граф сущностей очень большой? Есть ли у вас какие-либо предложения?

Я думаю о какой-то схеме кодирования для сущностей ... или об использовании NormalizableInterface , чтобы избежать зацикливания ..,

87
задан likeitlikeit 16 June 2013 в 17:09
поделиться