すべてのレコードを取得してJSONファイルに表示しようとしています。JMSSerializerBundleとSymfony 2 - JSONファイルへのDoctrine/ODMの出力
現在の関数は、特定のユーザーに属するすべてのイベントを取得します。
/**
* create json files from doctrine/mongo
* @Route("/createjson", name="createjson")
*/
public function createJson()
{
// check user authentication
$this->denyAccessUnlessGranted('ROLE_USER', null, 'Unable to access this page!');
$dm = $this->get('doctrine_mongodb')->getManager();
$repository = $dm->getRepository('AppBundle:Event');
$events = $repository->findBy(array('user' => $this->getUser()));
$serializer = SerializerBuilder::create()->build();
$result = $serializer->deserialize($events, 'AppBundle\Document\Event', 'json');
var_dump($result);
exit;
}
シリアライザに渡される要素の一部が配列形式であるため、これは機能しません。エラーが発生しています。
Warning: json_decode() expects parameter 1 to be string, array given
500 Internal Server Error - ContextErrorException
私は作り付けのsymfonyのシリアライザを使用する場合は、それが正常に動作します:私はJMSSerializerBundleを使用する/必要性をする理由
$serializer = $this->container->get('serializer');
$reports = $serializer->serialize($events, 'json');
return new Response($reports);
JSONを製造するしかしそれ故に私のドキュメント/エンティティに異なるものになります。例えば
を、レコードは次のようになります。
[{
"id": "572041b3288b560e5e00451c",
"name": "Test",
"date": "2016-04-27T05:25:00+1000",
"enddate": "2016-04-30T11:55:00+1000",
"location": {
"name": "Sydney, NSW"
},
"key": {
"id": "1g43g34g34g23f32g32G32gGSDF"
},
"user": {
"id": "57203174288b560e5e0044da"
}, ...
}]
しかし、私は唯一の方法は私がこれをやって行くだろう
[{
"id": "572041b3288b560e5e00451c",
"name": "Test",
"date": "2016-04-27T05:25:00+1000",
"location": "Sydney, NSW"
}]
JSON
に(出力)を表示したいですか? JMSSerializerBundleオンラインに関する資料はあまりありません。
編集:私が照会しているデータベースコレクションには、FOSUserBundleによって管理されているUserコレクションとの関係があります。しかし
が が
ご返信ありがとうございます。あなたが間違っているシリアライザを使用しました。私は '$ result = $ serializer-> deserialize($ events、 'AppBundle \ Document \ Event'、 'json');から' $ result = $ serializer-> serialize($ events、 'json');に変更しました。ドキュメント:http://jmsyst.com/bundles/JMSSerializerBundle#usage ここで私は詰まっている選択されたフィールドだけが表示されるように結果をフィルタリングです。私はドキュメンテーションの中でこれについて何の注意も見つけられず、可能かどうか疑問に思っていました。 ありがとうございました – Brendan
除外システムをご覧ください。http://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies – olibiaz