Я пытаюсь десериализовать следующую Json структуру в Profile
объект
{
"label": "lorem label",
"info": {
"name": "lorem name",
"title": "lorem title"
}
}
У меня есть класс Profile
namespace App\Document;
class profile
{
/**
* @var string
*/
protected $label;
/**
* @var Info
*/
protected $info;
// getters and setters
}
и класс Info
namespace App\Document;
class Info
{
/**
* @var string
*/
protected name;
/**
* @var string
*/
protected title;
// getters & setters
}
код моего контроллера следующий
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use App\Document;
public function addProfile(Request $request, DocumentManager $dm, $profile_id)
{
$phpDocNormalizer = new ObjectNormalizer(null, null, null, new PhpDocExtractor());
$reflectionNormalizer = new ObjectNormalizer(null, null, null, new ReflectionExtractor());
$serializer = new Serializer([$phpDocNormalizer, $reflectionNormalizer], [new JsonEncoder()]);
$profile = $serializer->deserialize($request->getContent(), Profile::class, 'json');
return new JsonResponse(Response::HTTP_CREATED);
}
Как говорит symfony документ , у меня установлен и работает phpDocExtractor, и также установлены аннотации do c, также установлена PropertyInfo Component
. Но я продолжаю получать это NotNormalizableValueException
:
The type of the "info" attribute for class "App\Document\Profile" must be one of "App\Document\Info" ("array" given).
Я застрял с этим на некоторое время, любая помощь очень ценится.