Symfony - Указание корня десериализации json массива в объект с помощью JMS\Serializer
Получаю json ответы от некого сервера на API запросы в таком формате:
{
"data": {
#здесь сам результат
}
}
Но мне нужно делать десериализацию самого результата внутри "data", по документации не смог найти как указать корень десериализации json'а (root)
Пример:
# Json ответ от сервера
{
"data": {
"totalCount": 3,
"version": "v1"
}
}
<?php
# Объект, в который нужно десериализовать
namespace App;
use JMS\Serializer\Annotation as Serializer;
class ExampleResponse
{
/**
* @var int
*
* @Serializer\Type("integer")
* @Serializer\SerializedName("totalCount")
*/
protected $totalCount;
/**
* @var string
*
* @Serializer\Type("string")
* @Serializer\SerializedName("version")
*/
protected $version;
}
# Вызов десериализации
# Приходится декодировать json в массив, а потом кодировать в json внутренности "data"
$this->serializer->deserialize(
json_encode(
json_decode(
$json,
true,
512,
JSON_THROW_ON_ERROR
)['data'],
JSON_THROW_ON_ERROR
),
App\ExampleResponse::class,
'json'
)
Есть какое-то более красивое решение?