如何在Symfony 2.0 AJAX应用程序中将条令实体编码为JSON?

我正在开发游戏应用程序并使用Symfony 2.0。我对后端有很多AJAX请求。更多的响应是将实体转换为JSON。例如:

类DefaultController扩展控制器
{           
公共职能启动行动()
{   
$user=$this->getDoctrine()
->getRepository('UserBundle:User')
->查找($id);
//将用户编码为json格式
$userDataAsJson=$this->encodeUserDataToJson($user);
返回数组(
“userDataAsJson”=>$userDataAsJson
);            
}
私有函数encodeUserDataToJson(用户$User)
{
$userData=array(
“id”=>$user->getId(),
“profile”=>数组(
“昵称”=>$user->getProfile()->Get昵称()
)
);
$jsonEncoder=新的jsonEncoder();
返回$jsonecoder->encode($userData,$format='json');
}
}

我所有的控制器都做同样的事情:获取一个实体并将它的一些字段编码为JSON。我知道我可以使用规范化器对所有实体进行编码。但如果一个实体循环链接到另一个实体怎么办?或者实体图非常大?你有什么建议吗

我考虑一些实体的编码模式。。。或者使用NormalizableInterface避免循环

现在使用php5.4,您可以执行以下操作:

使用JsonSerializable;
/**
*@Entity(repositoryClass=“App\Entity\User”)
*@Table(name=“user”)
*/
类MyUserEntity实现JsonSerializable
{
/**@列(长度=50)*/
私人$name;
/**@列(长度=50)*/
私人$登录;
公共函数jsonSerialize()
{
返回数组(
“名称”=>$this->名称,
'login'=>$this->login,
);
}
}

然后打电话

json编码(MyUserEntity);

发表评论