是否可以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) 我使用了 Symfony 序列化器来序列化我的Recherche对象。在一个Recherche对象中,我有子对象 :Categorie和Lieu。
当我反序列化我的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 …