【问题标题】:Serializer return an error 500 (no supporting normalizer found)序列化程序返回错误 500(未找到支持的规范化程序)
【发布时间】:2021-12-31 23:31:05
【问题描述】:

我想在我的 Symfony 项目中将一个对象转换为 JSON,我在我的方法中使用了 SerializerInterface。

这是我的方法:

     /**
     * @Route("{token}", name="list")
     */
    public function list(ProductList $productList, ProductRepository $productRepository, SerializerInterface $serializer): Response
    {
        $productListJSON = $serializer->serialize($productList, 'json');
        dd($productListJSON);

        return $this->json($productListJSON);
    }

这个 dd();给我一个错误 500:

无法规范化“App\Entity\ProductList”类型的对象,找不到支持的规范化器。

我在我的控制器中添加了“使用”,我已经测试在实体“产品列表”中添加组并使用此代码进行测试,但结果相同: $productListJSON = $serializer->serialize($productList, 'json', ['groups' => 'list_json']);

我不明白为什么会出现这个错误。

感谢您的帮助

【问题讨论】:

    标签: php json symfony serialization


    【解决方案1】:

    您忘记使用正确的 Normalizer 初始化您的序列化程序。

    修改您的代码以添加JsonEncoder 作为编码器和推荐的ObjectNormalizer 作为规范化器:

    use Symfony\Component\Serializer\Encoder\JsonEncoder;
    use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
    use Symfony\Component\Serializer\Serializer;
    
     /**
     * @Route("{token}", name="list")
     */
    public function list(ProductList $productList, ProductRepository $productRepository): Response
    {
        $encoders = [new JsonEncoder()];
        $normalizers = [new ObjectNormalizer()];
        $serializer = new Serializer($normalizers, $encoders);
    
        $productListJSON = $serializer->serialize($productList, 'json');
        dd($productListJSON);
    
        return $this->json($productListJSON);
    }
    

    documentation 中查看更多信息。

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 2021-06-19
      相关资源
      最近更新 更多