4

当我请求 xml 时,我的 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>

为什么只返回结束节点而不是所有键和值?

4

1 回答 1

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("/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[admin@example.com]]></email>
    <company><![CDATA[acme]]></company>
  </entry>
</result>
于 2013-04-29T08:59:51.267 回答