首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Symfony 5中递归地去修饰数组?

如何在Symfony 5中递归地去修饰数组?
EN

Stack Overflow用户
提问于 2021-02-14 23:18:16
回答 1查看 641关注 0票数 1

目前,我正试图对一个数组进行去of化,该数组作为JSON响应从API中提取出来,并被JSON解码。

问题是,我希望它被非正规化为一个类,其中一个属性是另一个类。

似乎使用Symfony去噪器可以轻松地完成任务,但我总是得到以下例外:

代码语言:javascript
代码运行次数:0
运行
复制
Failed to denormalize attribute "inner_property" value for class "App\Model\Api\Outer": Expected argument of type "App\Model\Api\Inner", "array" given at property path "inner_property".

我的反恶意代码看起来是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
$this->denormalizer->denormalize($jsonOuter, Outer::class);

在构造函数中注入去甲基化器:

代码语言:javascript
代码运行次数:0
运行
复制
public function __construct(DenormalizerInterface $denormalizer) {

我试图去修饰的数组:

代码语言:javascript
代码运行次数:0
运行
复制
array (
  'inner_property' => 
  array (
    'property' => '12345',
  ),
)

最后,我试图对这两个类进行去定向:

代码语言:javascript
代码运行次数:0
运行
复制
class Outer
{
    /** @var InnerProperty */
    private $innerProperty;

    public function getInnerProperty(): InnerProperty
    {
        return $this->innerProperty;
    }

    public function setInnerProperty(InnerProperty $innerProperty): void
    {
        $this->innerProperty = $innerProperty;
    }
}
代码语言:javascript
代码运行次数:0
运行
复制
class InnerProperty
{
    private $property;

    public function getProperty(): string
    {
        return $this->property;
    }

    public function setProperty(string $property): void
    {
        $this->property = $property;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-15 22:36:37

经过几个小时的搜索,我终于找到了原因。问题是"inner_property“蛇案和$innerProperty或getInnerProperty骆驼案的结合。在Symfony 5中,默认情况下不启用camel case到snake case转换器。

因此,我不得不在config/packages/framework.yaml work.yaml中添加这个配置。

代码语言:javascript
代码运行次数:0
运行
复制
framework:
        serializer:
                name_converter: 'serializer.name_converter.camel_case_to_snake_case'

以下是对Symfony文档的引用:https://symfony.com/doc/current/serializer.html#enabling-a-name-converter

或者,我也可以向外层类中的属性添加一个SerializedName注释:https://symfony.com/doc/current/components/serializer.html#configure-name-conversion-using-metadata

PS:我的问题没有被正确地问出来,因为我没有正确地更改属性和类名。所以我在问题中修正了这个问题,供未来的访客参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66201063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档