Symfony Serializer组件:反序列化混合类型的对象数组

时间:2018-03-08 12:57:09

标签: php symfony serializer

我想知道是否有一种方法来反序列化包含不同类型对象的数组。我构建了一些东西,我可以序列化和反序列化特定类型的对象数组,如下所示:

$nodes = [
    new PostNode(),
    new PostNode(),
    new PostNode()
];

$serializer = new Serializer( [
    new ObjectNormalizer(),
    new ArrayDenormalizer(),
], [ new JsonEncoder() ] ); 

$data = $serializer->serialize($nodes, 'json');

$deSerializedNodes = $serializer->deserialize( $data, PostNode::class . '[]', 'json' );

我得到的是我插入的数组,所以这很好。现在我想知道我是否可以像这样序列化和反序列化数组:

$nodes = [
    new PostNode(),
    new PostNode(),
    new PostNode(),
    new FormNode(),
    new FormNode()
];

1 个答案:

答案 0 :(得分:1)

您只能序列化多个对象类型的数组,如下所示:

$serializer = new Serializer([new GetSetMethodNormalizer(), new ArrayDenormalizer()], [new JsonEncoder()]);

$array = [new Foo('Radhi'), new Bar(26)];

$json = $serializer->serialize($array, 'json');

但是对于反序列化不同对象类型的数组,序列化程序不清楚,尤其是对于具有相同 getter/setter 方法名称的对象,因此我认为您需要为该特定用例做一些额外的配置。< /p>

查看Serializing Interfaces and Abstract Classes了解更多详情。