Возникает следующая ошибка при десерализации объекта:
Symfony\Component\Serializer\Exception\NotNormalizableValueException
The type of the "products" attribute for class "shop\manage\flexbe\objects\Lead" must be one of "shop\manage\flexbe\objects\Product[]" ("array" given).
Есть JSON-объект, проблема связанна с "products":
{
"id": "9757241",
"time": "1567105530",
// другие параметры
"products": [
{
"title": "Product name",
"count": 1
}
]
}
В классе Lead, который описывает объект, связанные методы:
private $products = [];
/**
* @return Product[]
*/
public function getProducts()
{
return $this->products;
}
/**
* @param Product $product
*/
public function addProduct(Product $product): void
{
$this->products[] = $product;
}
Код десериализации:
$normalizer = new ObjectNormalizer(null, null, new PropertyAccessor(), new ReflectionExtractor());
$serializer = new Serializer(array($normalizer), array(new JsonEncoder()));
$lead = $serializer->deserialize($data, Lead::class, 'json');
Не могу понять в чём проблема. По-сути, при использовании метода addProduct() в связке с PropertyAccessor-классом десериализатор должен был пройтись по массиву и поместить объекты в нём в класс Product.