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'
)

Есть какое-то более красивое решение?


Ответы (0 шт):