2014-09-10 5 views
6

Представьте У меня есть простой объект, структурирован так же, как показано ниже:Можно ли сериализовать массив в корневом каталоге объекта с помощью JMS Serializer?

Object (SomeClass) { 
    $someOtherData (array) [ 
     ... 
    ] 

    $data (array) [ 
     "key": "value", 
     "key": "value", 
     "key": "value", 
     "key": "value" 
    ] 
} 

Если бы я сериализовать этот объект с JMS Serializer в формате JSON, я бы получить результат, который имеет одинаковую структуру, но с $ данные, используемые в корневом элементе, например, так:

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

мне нужно иметь содержание переменной $ данных будет в корне сериализованного результата, а именно:

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

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

ответ

7

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

use JMS\Serializer\Annotation\Inline; 

// ... 

/** 
* @var array 
* 
* @Inline 
*/ 
protected $variables; 
0

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

+0

Ммм, я пытался, что, так как я отправил этот вопрос - Единственное, я получаю «нулевой» в результате сериализации, независимо от того, что я вернусь из обработчика. Weird ... – Seer

+0

Вы могли бы создать gist с файлом класса объекта и SerializerHandler? – skler

+1

Nevermind! Я нашел то, что было после. Аннотации @Inline. – Seer