2

Symfony2 には、Address エンティティと AddressList エンティティがあります。AddressList エンティティは、Address エンティティのコレクションを作成します。AddressList エンティティにマップする必要がある JSON 応答があります。

次のように JMS シリアライザーを使用してマップすると、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"
}]

これが Address エンティティです。

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

上記の Address エンティティを集めた AddressList エンティティです。

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

0 に答える 0