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
}