让我们说我有这个XML
<?xml version="1.0" encoding="UTF-8"?>
<Order>
<InvoiceNumber>201902130420</InvoiceNumber>
<Products>
<Product>
<Name>DaVinci IQ</Name>
<SKU>420342300</SKU>
</Product>
<Product>
<Name>Mighty</Name>
<SKU>420342305</SKU>
</Product>
</Products>
</Order>
,并希望将给定的XML反序列化为现有的“ Order” -Entity,其中包含一组Product-Entities,并且在Order属性$ products中具有
当我打电话
$order = $this->serializer->deserialize($xmlContent, Order::class, 'xml');
我确实从XML中获得了带有参数的Order对象,并且$ products-property被数组项填充。
但是,尽管我希望在生成的Order-Object中拥有一组Product []-Entities,但是我的$ products-property却被包含产品值的平面数组填充。
换句话说:我希望生成的$ order看起来像这样:
App\Model\Order {
-InvoiceNumber: "201902130420"
-products: array:2 [
0 => App\Model\Product {
-Name: DaVinci IQ
-SKU: 420342300
}
1 => App\Model\Product {
-Name: Mighty
-SKU: 420342305
}
]
}
但是我得到了这个:
App\Model\Order {
-InvoiceNumber: "201902130420"
-products: array:2 [
"Product" => array:2 [
"Name" => "DaVinci IQ"
"SKU" => "420342300"
]
"Product" => array:2 [
"Name" => "Mighty"
"SKU" => "420342305"
]
]
}
有人可以帮忙吗?
答案 0 :(得分:0)
您的序列化程序是否已加载ArrayDenormalizer?如果是这样,那么按以下方式调用它应该可以工作:
$order = $this->serializer->deserialize($xmlContent,'App\Model\Product[]', 'xml');
在类名后注意[]。
编辑:放入类路径App \ Model \ Product,在:-)之前没看到它