Как десериализовать вложенный объект JSON, используя JMS и Symfony? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь десериализовать некоторые JSON в обычный старый PHP объект, используя JMS через Symfony 4.4 (LTS).

JSON выглядит примерно так:

{
    "id": "c9cde632-ca23-4ed0-8b6d-05dfcbf1d994",
    "someProperty": "This is the value",
    "active": true,
    "nestedProperty": {
        "id": "78d46fb8-5f1a-4a00-89a6-4b96482b9ef6",
        "name": "The Name"
    }
}

У меня есть класс PHP, который выглядит примерно так:

<?php

class NestedExample
{
    /** @var string $id */
    private $id;

    /** @var string $someProperty */
    private $someProperty;

    /** @var bool $active */
    private $active;

   // Fluent Getters and Setters
   // ...
}

И это правильно десериализует вышеприведенные поля в объект.

Однако я хочу получить значения вложенного объекта в этот класс, также, делая что-то вроде:

/** @var string $nestedPropertyId */
private $nestedPropertyId;

/** @var string $nestedPropertyName */
private $nestedPropertyName;

Или, может быть, даже:

private $nestedProperty;

// Fluent Getter and Setter for $nestedProperty

/** @VirtualProperty("nestedPropertyId") */
public function getNestedPropertyId () 
{
    return $this->getNestedProperty()->id;
}

Но ничего не работает.

Я делаю это неправильно? Я никогда не собираюсь сериализовать этот класс обратно в JSON. Преобразование всегда будет одним из способов.

...