私はSymfony2アプリケーションで作業しています。私がやろうとしているのは、レスポンスから不要なフィールドを削除し、必要なフィールドだけを表示することです。Json Responseからのプロキシの削除Symfony2
私のJSONは次のようになります。ヌル、 "クローナー ":ヌル、" はをisInitialized ":真とタイムゾーンオブジェクトを非表示にし、私は" 初期化子" のようなフィールドを削除したい
[
{
"id": 1,
"title": "Granit",
"typeId": {
"id": 1,
"name": "X or Y",
"acroname": "xory",
"__initializer__": null,
"__cloner__": null,
"__isInitialized__": true
},
"pushDate": {
"timezone": {
"name": "Europe/Berlin",
"location": {
"country_code": "DE",
"latitude": 52.5,
"longitude": 13.36666,
"comments": "most locations"
}
},
"offset": 7200,
"timestamp": 1460584800
},
"addedAt": {
"timezone": {
"name": "Europe/Berlin",
"location": {
"country_code": "DE",
"latitude": 52.5,
"longitude": 13.36666,
"comments": "most locations"
}
},
"offset": 7200,
"timestamp": 1460548644
},
"deviceToShow": {
"id": 2,
"name": "Mobile",
"__initializer__": null,
"__cloner__": null,
"__isInitialized__": true
},
"statusSurvey": false,
"slides": [
{
"id": 1,
"title": "First Question",
"picture1": "160413015724bazinga2.jpg",
"picture2": "160413015724th.jpg",
"idSurvey": 1,
"absolutePathpic1": "C:\\xampp\\htdocs\\stu-wrapper\\src\\AppBundle\\Entity/../../../web/uploads/slideSurvey/160413015724bazinga2.jpg",
"webPathpic1": "uploads/slideSurvey/160413015724bazinga2.jpg",
"absolutePathpic2": "C:\\xampp\\htdocs\\stu-wrapper\\src\\AppBundle\\Entity/../../../web/uploads/slideSurvey/160413015724th.jpg",
"webPathpic2": "uploads/slideSurvey/160413015724th.jpg",
"file": null,
"file1": null
}
],
"categories": []
}
]
「タイムスタンプ」のみを表示します。
ここで私はJson Responseをシリアル化して作成しているコントローラです。
public function getAction()
{
$em = $this->getDoctrine()->getManager();
$survey = $em->getRepository ('AppBundle:Survey')->findAll();
if (!$survey) {
throw $this->createNotFoundException ('Data not found.');
}
$encoder = new JsonEncoder();
$normalizer = new ObjectNormalizer();
$normalizer->setCircularReferenceHandler (function ($survey) {
return $survey->getid();
});
$serializer = new Serializer(array ($normalizer), array ($encoder));
$jsonContent = $serializer->serialize ($survey, 'json');
return new Response($jsonContent);
}
ありがとうございます。
だから、Doctrine2は怠惰なロードされるすべての関係のプロキシクラスを作成します。そして、この操作を完全に構成することができます。エンティティを別のデータ(xml/json)に変換するためのカスタムシリアライザ/エンコーダ/コンバータを作成する必要があります。 – ZhukV