При десериализации объекта возникает следующая ошибка:
Symfony \ Component \ Serializer \ Exception \ NotNormalizableValueException
Тип атрибута "products" для класс "shop \ manage \ flexbe \ objects \ Lead" должен быть одним из "shop \ manage \ flexbe \ objects \ Product []" (задан "массив").
Иметь JSON - object:
{
"id": "9757241",
"time": "1567105530",
// other params
"products": [
{
"title": "Product name",
"count": 1
}
]
}
В классе Lead, который описывает методы, связанные с объектом, для "products":
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 () должно обойти массив и добавить все объекты в класс Product, например , в данном случае .