[英]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.