2

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

4

1 回答 1

0

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

我的映射看起来像:

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 序列化器序列化我的对象:

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

于 2015-10-28T21:00:14.247 回答