【问题标题】:Symfony Serializer component: Deserialize array of objects of mixed typesSymfony Serializer 组件:反序列化混合类型的对象数组
【发布时间】:2018-08-16 20:07:44
【问题描述】:

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

$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()
];

【问题讨论】:

    标签: php symfony serialization


    【解决方案1】:

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

    $serializer = new Serializer([new GetSetMethodNormalizer(), new ArrayDenormalizer()], [new JsonEncoder()]);
    
    $array = [new Foo('Radhi'), new Bar(26)];
    
    $json = $serializer->serialize($array, 'json');
    

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 2017-08-28
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多