在 Symfony Serializer
中是否可以反序列化属性中的对象数组?我有一个 Boss
类,它的 $Npc = []
属性需要保存一个 Npc
对象数组。我确实在文档中看到了一些示例,但它们没有说明此功能。我有一个带有 NPC 数组的 json 字符串例如:
class Boss {
private $Npc = [];
/**
* @return Npc[]
*/
public function getNpcs(): array
{
return $this->npcs;
}
}
我正在使用 php7.1 和 symfony/serializer 版本 ^3.3。
编辑: 我已经尝试过 PhpDocExtractor,但它不允许我安装它。 :(
编辑: 这是一个可能的 JSON 值:
{
"bossname": "Epic boss!",
"npcs": [{
"id": 24723,
"name": "Selin Fireheart",
"urlSlug": "selin-fireheart",
"creatureDisplayId": 22642
}]
}
最佳答案
我找到了一种方法来做到这一点 :)。我通过 Composer 安装了 Symfony PropertyAccess 包。使用此软件包,您可以添加加法器、去除器和干扰器。这样 Symfony Serializer 会自动用正确的对象填充数组。 示例:
private $npcs = [];
public function addNpc(Npc $npc): void
{
$this->npcs[] = $npc;
}
public function hasNpcs(): bool
{
return count($this->npcs) > 0
}
等等
通过这种方式,您可以将 ObjectNormalizer 用于:
$normalizer = new ObjectNormalizer(null, null, null, new ReflectionExtractor());
编辑:至少从 v3.4 开始,您还必须创建一个移除方法。否则它将无法工作(没有错误或警告)。
关于php - 如何在 Symfony Serializer 中反序列化对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47273427/