を持つオブジェクトにネストされた構造を非正規化サービス。 デシリアライズ後、オブジェクト内のコンテンツを非正規化したい。ここに私の構造があります(車のアプリケーションコンテキストでのモデル/メイク)。は、私は、バージョン2.8でのSymfony 2プロジェクトに取り組んでいると私は、ビルドインコンポーネントシリアライザを使用していsymfonyの2シリアライザ
[{
"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つの引数のみを必要とし、3つ目はPropertyAccessorInterfaceを実装します。 –
ああ、私はsf3でのみこれをテストしました。だから、APIの変更があった可能性があります。 v2.8でタイプ抽出機能を追加する方法がない場合、この回答はあなたには適していない可能性があります。 – Yoshi