简体   繁体   English

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

[英]Symfony Serializer component: Deserialize array of objects of mixed types

I would like to know if there is a method to deserialize an array containing objects of different types.我想知道是否有一种方法可以反序列化包含不同类型对象的数组。 I built something where I can serialize and deserialize an array of objects of a specific type like this:我构建了一些可以序列化和反序列化特定类型的对象数组的东西,如下所示:

$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' );

I get exactly the array back that I inserted so that is good.我得到了我插入的数组,所以很好。 Now I want to know if I can serialize and deserialize an array like this:现在我想知道我是否可以像这样序列化和反序列化一个数组:

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

You can only serialize an array of multiple object types as following:您只能序列化多个对象类型的数组,如下所示:

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

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

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

but for deserializing an array of different object types, it's not clear for the serializer, especially for objects that have the same getters/setters method names, so I think you need to do some additional configuration for that specific use case.但是对于反序列化不同对象类型的数组,序列化程序不清楚,特别是对于具有相同 getter/setter 方法名称的对象,因此我认为您需要针对该特定用例进行一些额外的配置。

Check Serializing Interfaces and Abstract Classes for more details.检查序列化接口和抽象类以获取更多详细信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用Symfony序列化器反序列化复杂对象的数组? - How to deserialize an array of complex objects with Symfony Serializer? 使用 Symfony Serializer Component 和 AbstractNormalizer::OBJECT_TO_POPULATE 反序列化实体数组 - Deserialize a entities array with Symfony Serializer Component and AbstractNormalizer::OBJECT_TO_POPULATE 如何在 Symfony Serializer 中反序列化一组对象? - How can I deserialize an array of objects in Symfony Serializer? Symfony JMS序列化器将json数组反序列化为一个整数 - Symfony JMS Serializer deserialize array of jsons to an entitie Symfony序列化器-如何对对象数组进行分组? - Symfony Serializer - How to group array of objects? 使用 Symfony Serializer 将 JSON 反序列化为类实例数组 - Deserialize JSON into an array of class instances using Symfony Serializer Symfony 序列化程序无法反序列化为 \\DateTime - Symfony serializer cannot deserialize into \DateTime 使用JMS序列化器反序列化混合类型的值 - Deserialize value of mixed type with JMS Serializer JMS序列化器反序列化嵌套对象 - JMS Serializer deserialize nested objects Symfony Serializer不会反序列化为不同命名空间中的对象:'找不到支持的规范化器' - Symfony Serializer doesn't deserialize into objects in different namespace: 'no supporting normalizer found'
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM