Php Symfony:如何反序列化包含一组对象的JSON文件,这些对象的属性由一组对象组成?
在Symfony中,我尝试从JSON文件反序列化一组“Activity”类型的对象。每个对象活动都包含三个属性:Php Symfony:如何反序列化包含一组对象的JSON文件,这些对象的属性由一组对象组成?,php,api,symfony,json-deserialization,json-serialization,Php,Api,Symfony,Json Deserialization,Json Serialization,在Symfony中,我尝试从JSON文件反序列化一组“Activity”类型的对象。每个对象活动都包含三个属性: Intger Id 类类型为“Person”的属性称为“host” 类类型为“Person”的对象数组称为“participants” 我尝试了一个Symfony制作的反序列化程序来反序列化Person类型的对象,效果很好。但当我试图用它来反序列化Activity类型的对象时,它给了我一个错误。 $serializer=新的序列化程序( [新建GetSetMethodNorma
$serializer=新的序列化程序(
[新建GetSetMethodNormalizer(),新建ArrayNormalizer()],
[新的JSONECODER()]
);
$members=$serializer->反序列化($json,'ActivitiesBundle\Entity\Person[],'json');
另一个无法提取数据:
$activities=$serializer->反序列化($json,
“ActivitiesBundle\Entity\Activity[]”,“json”);
课堂活动
{
私人$id;
私人$主机;
私人$参与者=[];
公共函数getId()
{
返回$this->id;
}
公共函数setId($id)
{
$this->id=$id;
退还$this;
}
公共函数getHost(){
返回$this->host;
}
公共函数setHost(Person$host){
$this->host=$host;
退还$this;
}
公共功能{
返回$this->参与者;
}
公共函数集合参与者(\Person…$participants){
$this->participants=$participants;
退还$this;
}
}
班级人员
{
私人$id;
私人$name;
公共函数getId()
{
返回$this->id;
}
公共函数setId($id)
{
$this->id=$id;
退还$this;
}
公共函数getName(){
返回$this->name;
}
公共函数setName($name){
$this->name=$name;
退还$this;
}
}
我得到的错误是:
Type error: Argument 1 passed to ActivitiesBundle\Entity\Activity::setHost()
must be an instance of ActivitiesBundle\Entity\Person
数组反序列化(人员数组)的错误消息是什么?另外,您没有向我们展示一个简单的json示例,据我们所知,json在您的特定情况下可能无效。例如,
{“host”:“John”}
可能会导致此错误……我将该反序列化程序与另一个只包含人员列表的JSON文件一起使用,效果良好。
[
{
"id": 1,
"host": {
"id": 48,
"name": "Name48",
},
"participants": [
{
"id": 975,
"name": "Name975",
},
{
"id": 866,
"name": "Name866",
},
{
"id": 355,
"name": "Name355",
},
{
"id": 856,
"name": "Name856",
}
]
},
{
"id": 2,
"host": {
.....