【问题标题】:Serializing two dimensional array using JMS Serializer使用 JMS 序列化器序列化二维数组
【发布时间】:2016-01-28 15:09:14
【问题描述】:

我有一个代表表格、行和单元格的数据结构。我需要将其序列化和反序列化为 JSON 和 XML。如何配置 JMS Serializer 来序列化这种对象,

class Test {
    public $data = [
        'row_one' => ['cell-11', 'cell-12'],
        'row_two' => ['cell-21', 'cell-22'],
    ];
}

进入这个 XML:

<result>
    <data>
        <row index="row_one">
            <cell>cell-11</cell>
            <cell>cell-12</cell>
        </row>
        <row index="row_two">
            <cell>cell-21</cell>
            <cell>cell-22</cell>
        </row>
    </data>
</result>

我已经尝试使用表示带有@Inline 注释的行的对象,它不适用于 JSON 中的反序列化,行是空的。

【问题讨论】:

    标签: php symfony jmsserializerbundle jms-serializer


    【解决方案1】:

    最后我设法为每一行使用一个单独的对象(反)序列化我的对象。

    我的映射如下:

    class Table
    {
        /**
         * @\JMS\Serializer\Annotation\Inline
         */
        private $rows = [];
    
        public function __construct(array $rows)
        {
            $this->rows = $rows;
        }
    }
    
    class Row
    {
        /**
         * @\JMS\Serializer\Annotation\Inline
         */
        private $values = [];
    
        public function __construct(array $values)
        {
            $this->values = $values;
        }
    }
    

    然后我使用 JMS Serializer 序列化我的对象:

    echo $serializer->serialize(new Table([
        new Row(['cell-11', 'cell-12']),
        new Row(['cell-21', 'cell-22'])
    ]), 'json');
    

    不幸的是,由于我试图在此处修复的错误,这种方法反序列化不起作用 - https://github.com/schmittjoh/serializer/pull/513

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多