gpt4 book ai didi

ajax - 如何在 Symfony 2.0 AJAX 应用程序中将 Doctrine 实体编码为 JSON?

转载 作者:行者123 更新时间:2023-12-03 05:03:24 25 4
gpt4 key购买 nike

我正在开发游戏应用程序并使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com