使用带有Symfony 2.6的JMS Serializer添加根元素名称

时间:2015-01-27 11:06:47

标签: symfony fosrestbundle jmsserializerbundle jms-serializer symfony-2.6

我使用Symfony 2.6FOSRestBundle使用JMSSerializerBundle实施了网络服务。

虽然我将request放在配置文件中,但我无法设置名为xml_root_name: request的根元素。

我有一个config\serializer\Entity.Request.yml文件,其中包含以下信息:

Tvjp\RequestBundle\Entity\Request:
    exclusion_policy: ALL
    xml_root_name: request
    properties:
        id:
            expose: true
            type: integer
        label:
            expose: true
            type: string
        issuer:
            expose: true
            type: string

当我尝试访问单个request时,这就是我用XML获得的内容:

<result>
    <id>23</id>
    <label><![CDATA[ test label ws post ]]></label>
    <issuer><![CDATA[ test issuer ws post ]]></issuer>
</result>

我在json中获得的内容:{"id":23,"label":"test label ws post","issuer":"test issuer ws post"}

任何想法我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我终于设法让它在实体类上使用注释而不是使用config\serializer\Entity.Request.yml文件。

所以我删除了文件config\serializer\Entity.Request.yml,这是我的实体Request文件:

use JMS\Serializer\Annotation\ExclusionPolicy,
    JMS\Serializer\Annotation\Expose,
    JMS\Serializer\Annotation\Type,
    JMS\Serializer\Annotation\XmlRoot;

/**
 * Request
 * @ExclusionPolicy("all")
 * @XmlRoot("request") 
 */
class Request{

    /**
     * @var integer
     * @Expose
     * @Type("integer")
     */
    private $id;

    /**
     * @var string
     * @Expose
     * @Type("string")
     */
    private $label;

   /**
    * @var string
    * @Expose
    * @Type("string")
    */
    private $issuer;

    [...]
}