Php 使用Symfony2 JMS序列化程序包将JSON响应解析为类
在Symfony2中,我有一个地址实体和一个地址列表实体。AddressList实体生成地址实体的集合。我有一个JSON响应,需要映射到AddressList实体 使用JMS序列化程序映射时,AddressList始终返回null,如下所示:Php 使用Symfony2 JMS序列化程序包将JSON响应解析为类,php,symfony,jmsserializerbundle,jms-serializer,data-mapping,Php,Symfony,Jmsserializerbundle,Jms Serializer,Data Mapping,在Symfony2中,我有一个地址实体和一个地址列表实体。AddressList实体生成地址实体的集合。我有一个JSON响应,需要映射到AddressList实体 使用JMS序列化程序映射时,AddressList始终返回null,如下所示: $this->get('jms_serializer')->deserialize($json, 'Foo\Bar\AddressList', 'json'); 现在我知道,如果我在JSON响应的根级别添加一个键(地址),那么它就可以很好地工
$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
}
我认为您的require response[{…},{…}]是无效的。您找到答案了吗?如果是的话,如果你把它贴出来就好了:-)不幸的是没有。正如我在问题中提到的,我必须修改JSON响应。它可能在最近的更新中有修复,但我还没有尝试过。如果我遇到任何解决方案,我会在这里发布更新。
<?php
namespace Foo\Bar;
use JMS\Serializer\Annotation\Type;
class AddressList
{
/**
* @Type("array<Foo\Bar\Address>")
*/
public $addresses;
...
// Getters Setters
}