2013-04-29 51 views
4

我的XML輸出看起來奇怪,當我請求XML ..FOSRestBundle輸出錯誤的XML

控制器:

use FOS\RestBundle\Controller\Annotations as REST; 
class RestController { 
    /** 
    * @REST\View 
    */ 
    public function getAgenciesAction() { 
     return array("bb"=>array('zz'=>'vv'),'zz'); 
    } 
} 

請求頭: Aceept: application/xml

響應

<?xml version="1.0" encoding="UTF-8"?> 
<result> 
    <entry> 
    <entry><![CDATA[vv]]></entry> 
    </entry> 
    <entry><![CDATA[zz]]></entry> 
</result> 

爲什麼只有最終節點返回,而不是所有的鍵和值?

+0

不要忘了接受的答案。 – 2013-12-06 21:52:26

回答

4

在FOSRestBundle XML序列化不序列與按鍵陣列。不管密鑰如何,每個數組條目的結果都是<entry>。你的例子中的輸出是正確的。鍵僅在json輸出相關。

序列化實體具有正確的輸出,作爲字段將導致<field>value</field>

實施例控制器

/** 
* @ApiDoc(
*  description="Returns the own user details", 
*  statusCodes={ 
*   200="Returned when successful", 
*   403="Returned when missing permissions", 
*  } 
*) 
* 
* @Rest\Get("https://stackoverflow.com/users/me") 
* @Rest\View(serializerGroups={"details"}) 
*/ 
public function getMeAction() 
{ 
    $user = $this->getUser(); 

    return array('user' => $user); 
} 

和響應。你看,密鑰user被輸出爲<entry>

<?xml version="1.0" encoding="UTF-8"?> 
<result> 
    <entry> 
    <id><![CDATA[517781e2e707a00217000000]]></id> 
    <username><![CDATA[admin]]></username> 
    <email><![CDATA[[email protected]]]></email> 
    <company><![CDATA[acme]]></company> 
    </entry> 
</result> 
+0

酷!這真的很有趣:) – 2013-12-07 01:00:18