Я использую: https://jmsyst.com/libs/serializer

Для десериализации объектов json. В настоящее время у меня есть это:

/**
 * @param int $id
 * @return Customer
 * @throws \Http\Client\Exception
 */
public function get(int $id): Customer
{
    $response = $this->client->get('/customers/' . $id);

    $data = json_encode(json_decode(
        $response->getBody()->getContents()
    )->data->attributes);

    return $this
        ->serializer
        ->deserialize($data, Customer::class, 'json');
}

Полученный мной здесь json выглядит так:

   {
    "data": {
            "type": "customer",
            "id": "4356456",
            "links": {
                    "self":"https:\/\/api.ecurring.com\/customers\/345656"
            },
            "attributes": {
                    "gender": "m",
            "first_name": "Laurens"
        }
    }

Можно ли указать JMS, что он должен автоматически запускаться с data->attributes вместо того, чтобы делать что-то вроде этого:

 $data = json_encode(json_decode(
            $response->getBody()->getContents()
        )->data->attributes);
1
Jamie 4 Мар 2019 в 13:17

1 ответ

Лучший ответ

Вы можете проверить политику исключения.

Прочтите документацию, это действительно полезно.

Политика исключения и Аннотация

0
thafirstone 5 Мар 2019 в 11:17