使用Symfony2 JMS Serializer Bundle将JSON响应解析为类

时间:2016-06-22 10:39:01

标签: php symfony jmsserializerbundle jms-serializer data-mapping

在Symfony2中,我有一个Address实体和一个AddressList实体。 AddressList实体创建Address实体的集合。我有一个需要映射到AddressList实体的JSON响应。

使用JMS Serializer映射时,AddressList始终返回null,如下所示:

$this->get('jms_serializer')->deserialize($json, 'Foo\Bar\AddressList', 'json');

现在我知道如果我在根级别向JSON响应添加一个密钥(地址),那么它可以正常工作,因为它可以映射到响应对象中的那个密钥,即

{"addresses":[{...},{...}]}

但是我想让它与孤立的对象数组一起使用,如下所示。

谢谢!

JSON回复:

[{
  "property": "foo",
  "street": "bar",
  "town": "baz",
  "postcode": "123120"
},{
  "property": "baz",
  "street": "foo",
  "town": "bar",
  "postcode": "987654"
}]

这是地址实体:

<?php
namespace Foo\Bar;
class Address
{
    public $property;
    public $street;
    public $town;
    public $postcode;
    ...
    // Getters Setters
}

这是AddressList实体,它构成了上面的Address实体的集合。

<?php
namespace Foo\Bar;
use JMS\Serializer\Annotation\Type;
class AddressList
{
    /**
     * @Type("array<Foo\Bar\Address>")
     */
    public $addresses;
    ...
    // Getters Setters
}

0 个答案:

没有答案