gpt4 book ai didi

symfony - 使用 JMSSerializerBundle 序列化指定字段

转载 作者:行者123 更新时间:2023-12-02 21:19:27 26 4
gpt4 key购买 nike

我正在构建一个 REST API,我想让我的用户可以选择通过 URL 参数返回哪些字段,例如

/users?fields=username,email,address.city,address.country

有什么方法可以使用 JMSSerializerBundle 来完成此类功能吗?

//编辑

请注意嵌入的集合

最佳答案

我认为这不是 JMSSerializer 的工作,至少不完全是。相反,我会做的是:

// Do not serialize into JSON or XML, but to PHP array
$userSerialized = $jmsSerializer->toArray($user);

// Turn "username,email" into ['username' => 0, 'email' => 1, ... ]
$fields = array_flip(explode($request->query->get('fields')));

$userSerializedFiltered = array_intersect_key($userSerialized, $fields);

// Finally, put it into desired format, JSON for example:
$json = json_encode($userSerializedFiltered);

另一个想法:

您可以利用Doctrine Partial objects :

$user = $em->createQuery("select partial u.{" . $fields . "} from MyApp\Domain\User u")->getResult();
$serialized = $jmsSerializer->serialize($user, 'json');

希望这有帮助...

关于symfony - 使用 JMSSerializerBundle 序列化指定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125702/

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