次のコントローラー/アクションがあります。
public function messagesAction()
{
$encoders = array(new JsonEncoder());
$normalizers = array(new GetSetMethodNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$message = $this->getDoctrine()
->getRepository('AcmeStoreBundle:Message')
->findAll();
$response = new Response($serializer->serialize($message, 'json'));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}
次のjsonを送信します。
[
{
"id": 1,
"iam": 1,
"youare": 2,
"lat": 50.8275853,
"lng": 4.3809764,
"msgbody": "Lorem ipsum lorem ipsum lorem ipsum"
},
{
"id": 2,
"iam": 1,
"youare": 2,
"lat": 50.8307348,
"lng": 4.3734823,
"msgbody": "What up?"
}
]
名前付きのキーがなく、Javascript fw (Ember) がいくつかのオブジェクトを取得するのが難しくなります。
Json 出力を次のように変更したいと思います。
[
{
"message": {
"id": "1",
"iam": "male",
"youare": "female",
"lat": "50.8307348"
}
}
]
遊べる正規表現があることは知っていますが、どこにあるかはわかりません。ご覧のとおり、標準のすぐに使えるシリアライザーを使用しています (これが有効な Json を返す唯一の方法でした)。私がやりたいことをするためのオプションが付属していますか? (ボーナス:送信する前にデータを操作することもできます..)