在Symfony2中使用jms / serializer-bundle序列化XML有效负载的随机键值对

时间:2015-07-22 19:58:25

标签: symfony jmsserializerbundle jms-serializer

下面的键randoms可以包含任何键值对,因此无论您输入什么(只要它在值键对中)都将被接受。例如<tomato>nonsense</tomato>。但是我的映射没有接收它们所以我得到randoms的空数组。我错过了什么?

注意:我列出了我尝试过的所有public $randoms;。我正在使用"jms/serializer-bundle": "0.13.0",作曲家包和Symfony2。

PAYLOAD

<?xml version="1.0" encoding="UTF-8"?>
<product id="1">
    <title>Samsung</title>
    <randoms>
        <review>710</review>
        <popularity>good</popularity>
    </randoms>
</product>

模型映射

namespace Application\BackendBundle\Model\Api\Xml;

use JMS\Serializer\Annotation as Serializer;

/**
 * @Serializer\XmlRoot("product")
 */
class Product
{
    /**
     * @Serializer\Type("string")
     */
    public $title;

    /**
     * @Serializer\Type("array<string, string>")
     * @Serializer\XmlKeyValuePairs
     */
    public $randoms;

    /**
     * @Serializer\Type("array<string, string>")
     * @Serializer\XmlKeyValuePairs
     */
    public $randoms = [];

    /**
     * @Serializer\Type("array")
     * @Serializer\XmlKeyValuePairs
     */
    public $randoms = [];

    /**
     * @Serializer\Type("array")
     * @Serializer\XmlKeyValuePairs
     */
    public $randoms;

    /**
     * @Serializer\Type("array")
     */
    public $randoms;

    /**
     * @Serializer\Type("array")
     */
    public $randoms = [];
}

JSON响应

{
    "title": "Samsung",
    "randoms": []
}

1 个答案:

答案 0 :(得分:0)

此问题已在last release中得到解决。以下部分现在有效。

/**
 * @Serializer\Type("array<string, string>")
 * @Serializer\XmlKeyValuePairs
 */
public $random;