Можно ли сериализовать массив в корень объекта с помощью сериализатора JMS?


Представьте, что у меня есть простой объект, структурированный аналогично приведенному ниже:

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"
}

Возможно ли это? Если да, то как?

Author: Seer, 2014-09-10

2 answers

Оказывается, для этого есть аннотация. Это @Inline аннотация:

use JMS\Serializer\Annotation\Inline;

// ...

/**
 * @var array
 *
 * @Inline
 */
protected $variables;
 7
Author: Seer, 2014-09-10 13:34:21

Я думаю, что лучший метод - это использование обработчика сериализации. Здесь вы можете найти немного документации: http://jmsyst.com/libs/serializer/master/handlers .

 0
Author: skler, 2014-09-10 12:03:25