作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发游戏应用程序并使用 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');
}
}
我的所有 Controller 都做同样的事情:获取一个实体并将其一些字段编码为 JSON。我知道我可以使用规范化器并对所有实体进行编码。但是,如果一个实体具有到其他实体的循环链接怎么办?或者实体图很大?你有什么建议吗?
我考虑一些实体的编码模式...或使用NormalizedInterface
来避免循环...,
最佳答案
现在使用 php5.4,您可以执行以下操作:
use JsonSerializable;
/**
* @Entity(repositoryClass="App\Entity\User")
* @Table(name="user")
*/
class MyUserEntity implements JsonSerializable
{
/** @Column(length=50) */
private $name;
/** @Column(length=50) */
private $login;
public function jsonSerialize()
{
return array(
'name' => $this->name,
'login'=> $this->login,
);
}
}
然后调用
json_encode(MyUserEntity);
关于ajax - 如何在 Symfony 2.0 AJAX 应用程序中将 Doctrine 实体编码为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6706485/
我是一名优秀的程序员,十分优秀!