2013-02-16 18 views
0

我有以下控制器/動作:將數據序列化/規範化爲JSON:如何以編程方式更改輸出映射?

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(恩伯),以使硬得到一些物體。

我想的JSON輸出更改爲:

[ 
    { 
     "message": { 
     "id": "1", 
     "iam": "male", 
     "youare": "female", 
     "lat": "50.8307348" 
     } 
    } 
] 

我知道有正則表達式我可以玩,但我真的不知道在哪裏。正如你所看到的,我使用標準的開箱序列化程序(這是我可以返回有效的Json的唯一方法)。它是否帶有我想要的選項? (獎金:我還想在發送數據之前操縱數據..)

回答

0

爲了解決這類問題,我開發了一個sf2 bundle來將數據導出爲不同格式,並且您可以自定義輸出用樹枝模板

https://github.com/IDCI-Consulting/ExporterBundle

希望這將是有用的。

+1

你能提供一些關於如何解決特定問題的更多信息嗎? (正如我看到的捆綁就像一個完整的串行器捆綁替代品..) – 2013-02-16 17:22:20

相關問題