我工作的Symfony 2項目2.8版本,我使用的是內置的組件串行 - >http://symfony.com/doc/current/components/serializer.html與symfony的2串對象非規範化嵌套結構
我已經通過網絡提供的JSON結構服務。 反序列化之後,我想將對象中的內容非規範化。這裏是我的結構(模型/在汽車應用環境中製作)。
[{
"0": {
"id": 0,
"code": 1,
"model": "modelA",
"make": {
"id": 0,
"code": 1,
"name": "makeA"
}
}
} , {
"1": {
"id": 1,
"code": 2,
"model": "modelB",
"make": {
"id": 0,
"code": 1,
"name": "makeA"
}
}
}]
我的想法是來填充VehicleModel
對象至極包含一個VehicleMake
對象的引用。
class VehicleModel {
public $id;
public $code;
public $model;
public $make; // VehicleMake
}
這裏是我做的:
// Retrieve data in JSON
$data = ...
$serializer = new Serializer([new ObjectNormalizer(), new ArrayDenormalizer()], [new JsonEncoder()]);
$models = $serializer->deserialize($data, '\Namespace\VehicleModel[]', 'json');
在結果,我的對象VehicleModel
正確填充,但$make
在邏輯上是一個鍵/值數組。在這裏,我想要一個VehicleMake
。
有沒有辦法做到這一點?
THX
你是對的我在我的json有一個錯字。我更新了我的問題。 –
ObjectNormaliser在構造函數中只需要3個參數,而第三個實現PropertyAccessorInterface,對吧? –
哦,我只在sf3上測試過。所以api可能會有變化。如果在v2.8中沒有辦法添加類型提取器,那麼這個答案可能不適合你。 – Yoshi