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

Serialising random key-value pair of XML payload with jms/serializer-bundle in Symfony2

下面的

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

注意:我在下面列出了我尝试过的所有 public $randoms;。我在 Symfony2 中使用 "jms/serializer-bundle": "0.13.0", composer 包。

有效载荷

<?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": []
}

此问题已在 last release 中解决。下面的部分现在有效。

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