使用JMS Serializer序列化二维数组

时间:2015-10-28 17:39:48

标签: php symfony jmsserializerbundle jms-serializer

我有一个表示表格,行和单元格的数据结构。我需要将它序列化并反序列化为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中的反序列化,行是空的。

1 个答案:

答案 0 :(得分:0)

最后,我设法(取消)使用每个Row的单独对象序列化我的对象。

我的映射如下:

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