我正在尝试在json和doctrine实体之间进行序列化和反序列化,但一直收到此错误
“无法对AppBundle / Person类型的对象进行非规范化,没有支持 找到normalizer。 “
我的实体类
<?php
namespace AppBundle\Entity;
class Person
{
private $age;
private $name;
// Getters
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
// Setters
public function setName($name)
{
$this->name = $name;
}
public function setAge($age)
{
$this->age = $age;
}
}
我的控制器
<?php
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Entity\Person;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
class RawGrnController extends Controller
{
public function newAction(Request $request)
{
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new ObjectNormalizer(),new GetSetMethodNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$data =$data = <<<EOF
<person>
<name>foo</name>
<age>99</age>
</person>
EOF;
$person = $serializer->deserialize($data, 'AppBundle\Person', 'xml');
$reaponse = new Response($person);
return $reaponse;
}
}
我从官方的Symfony文档Here获得了这段代码。我试图在我的真实项目中使用它,然后得到了上面的错误,我在文档上尝试了示例,但仍然得到了相同的错误。< / p>
到目前为止我尝试过的事情
我不知道我缺少什么让标准化工具正常工作。我的项目中的对象要复杂得多,但我有点怀疑,因为文档中的示例给出了同样的错误。任何帮助都非常感谢。
答案 0 :(得分:2)
对于后代,如果您将序列化程序注入控制器以反序列化 POST 请求正文(例如)并且出现此错误,您可能只是导入了 symfony/serializer
而忘记导入了 {{1} }
关于How to use the serializer的更多信息