是否可以使用JMS序列化程序将数组序列化为对象的根


Is it possible to serialize an array to the root of an object with JMS Serializer?

想象一下,我有一个简单的对象,结构类似于下面的对象:

Object (SomeClass) {
    $someOtherData (array) [
        ...
    ]
    $data (array) [
        "key": "value",
        "key": "value",
        "key": "value",
        "key": "value"
    ]
}

如果我用JMS序列化程序将这个对象序列化为JSON,我会得到一个结构相同的结果,但根元素上有$data,如下所示:

{
    "someOtherData": {
        ...
    },
    "data": {
        "key": "value",
        "key": "value",
        "key": "value",
        "key": "value"
    }
}

我需要将$data变量的内容放在序列化结果的根上,即:

{
   "someOtherData": {
       ...
   },
   "key": "value",
   "key": "value",
   "key": "value",
   "key": "value"
}

这可能吗?如果是,如何?

原来有一个注释。这是@Inline注释:

use JMS'Serializer'Annotation'Inline;
// ...
/**
 * @var array
 *
 * @Inline
 */
protected $variables;

我认为最好的方法是使用SerializationHandler。在这里,您可以找到一些文档:http://jmsyst.com/libs/serializer/master/handlers.