我正在使用symfony 4.2构建一个Api,并希望在使用
安装后使用jms-serializer将我的数据序列化为Json格式。撰写者需要jms / serializer-bundle
当我尝试以这种方式使用它时:
``` demands = $demandRepo->findAll();
return $this->container->get('serializer')->serialize($demands,'json');```
它给了我这个错误:
Service "serializer" not found, the container inside "App\Controller\DemandController" is a smaller service locator that only knows about the "doctrine", "http_kernel", "parameter_bag", "request_stack", "router" and "session" services. Try using dependency injection instead.
答案 0 :(得分:0)
正如我在评论中所说,您可以使用Symfony的默认序列化器,并使用它由构造函数注入。
<data
android:host="myapp.com"
android:pathPattern="/.*/.*/quiz.html"
android:scheme="https" />
答案 1 :(得分:0)
假设您有一个名为Foo.php
的实体,该实体具有id
,name
和description
您只想返回id
,而在另一种情况下使用name
之类的特定API时,foo/summary/
也需要返回description
}}
这里的序列化器真的很有帮助。
foo/details
让我们使用序列化程序获取数据取决于组
use JMS\Serializer\Annotation as Serializer;
/*
* @Serializer\ExclusionPolicy("all")
*/
class Foo {
/**
* @Serializer\Groups({"summary", "details"})
* @Serializer\Expose()
*/
private $id;
/**
* @Serializer\Groups({"summary"})
* @Serializer\Expose()
*/
private $title;
/**
* @Serializer\Groups({"details"})
* @Serializer\Expose()
*/
private $description;
}
答案 2 :(得分:0)
最后,我使用Symfony序列化程序找到了答案 非常简单:
作曲家需要symfony / serializer
.....//
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
// .....
.... //
/**
* @Route("/demand", name="demand")
*/
public function index(SerializerInterface $serializer)
{
$demands = $this->getDoctrine()
->getRepository(Demand::class)
->findAll();
if($demands){
return new JsonResponse(
$serializer->serialize($demands, 'json'),
200,
[],
true
);
}else{
return '["message":"ooooops"]';
}
}
//......
使用它,我发现依赖项或DateTime或其他问题没有任何问题;)