相关疑难解决方法(0)

如何在Symfony Serializer中反序列化对象数组?

是否可以Symfony Serializer反序列化属性中的对象数组?我有一个Boss$Npc = []需要持有一个Npc对象数组的属性.我确实在文档中看到了一些示例,但他们没有说明此功能.我有一个带有NPC数组的json字符串例如:

class Boss {

    private $Npc = [];    

    /**
    * @return Npc[]
    */
    public function getNpcs(): array
    {
        return $this->npcs;
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用的是php7.1和symfony/serializer版本^ 3.3.

编辑:我已经尝试过PhpDocExtractor,但它不会让我安装它.:(

编辑:这是一个可能的JSON值:

{
    "bossname": "Epic boss!",
    "npcs": [{
        "id": 24723,
        "name": "Selin Fireheart",
        "urlSlug": "selin-fireheart",
        "creatureDisplayId": 22642
    }]
}
Run Code Online (Sandbox Code Playgroud)

php serializer symfony

10
推荐指数
4
解决办法
4590
查看次数

symfony 反序列化嵌套对象

我使用了 Symfony 序列化器来序列化我的Recherche对象。在一个Recherche对象中,我有子对象 :CategorieLieu

当我反序列化我的Recherche对象时,所有子对象都被转换成数组。我希望它们再次成为对象。

这就是我序列化对象的方式:

$encoders = array(new JsonEncoder());
$normalizer = new ObjectNormalizer();
$normalizer->setIgnoredAttributes(array('parent', 'enfants'));
$normalizer->setCircularReferenceHandler(function ($object) {
    return $object->getCode();
});
$normalizers = array($normalizer);
$serializer = new Serializer($normalizers, $encoders);
$rechercheJson= $serializer->serialize($recherche, 'json');
Run Code Online (Sandbox Code Playgroud)

这就是我反序列化它的方式:

$encoders = array(new JsonEncoder());
$normalizer = new ObjectNormalizer();
$normalizer->setIgnoredAttributes(array('parent', 'enfants'));
$normalizer->setCircularReferenceHandler(function ($object) {
    return $object->getCode();
});
$normalizers = array($normalizer);
$serializer = new Serializer($normalizers, $encoders);
$recherche = $serializer->deserialize($recherche_json, Recherche::class, 'json');
Run Code Online (Sandbox Code Playgroud)

我认为可能与规范化器有关,但我在文档中找不到任何对我有帮助的内容。

任何人都有帮助的想法?

谢谢 !

编辑:看到这篇文章后:使用 symfony …

serialization deserialization symfony-3.4

3
推荐指数
2
解决办法
8601
查看次数