使用JSMSerializerBundle反序列化多维JSON API响应
我与Symfony2/JSMSerializerBundle合作 将平面json对象序列化为PHP对象非常有效。但我使用的API给出了多维Json响应:使用JSMSerializerBundle反序列化多维JSON API响应,json,symfony,json-deserialization,jmsserializerbundle,jms-serializer,Json,Symfony,Json Deserialization,Jmsserializerbundle,Jms Serializer,我与Symfony2/JSMSerializerBundle合作 将平面json对象序列化为PHP对象非常有效。但我使用的API给出了多维Json响应: { "Webmessage": { "@version": "1.0", "Header": { "Country": "NL", "Language": "NL" }, "Content": { "Filters": { "Sizes":
{
"Webmessage": {
"@version": "1.0",
"Header": {
"Country": "NL",
"Language": "NL"
},
"Content": {
"Filters": {
"Sizes": {
"Size": [
{
"@id": "241",
"#text": "3,5"
},
{
"@id": "55",
"#text": "36"
}
]
},
"Colours": {
"Colour": [
{
"@id": "159",
"#text": "wit"
},
{
"@id": "54",
"#text": "zwart"
}
]
}
}
}
}
}
作为反序列化的PHP,我希望如下所示:
Array
(
[sizes] => Array
(
[0] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] => 1
[text:AppBundle\Entity\Filter:private] => Heren
)
[1] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] => 2
[text:AppBundle\Entity\Filter:private] => Dames
)
)
[colour] => Array
(
[0] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] =>56
[text:AppBundle\Entity\Filter:private] => Black
)
[1] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] => 212
[text:AppBundle\Entity\Filter:private] => Yellow
)
)
$array= json_decode($json, true);
$valueToDenormalize = $array['value'];
$normalizer = new GetSetMethodNormalizer();
$entity = $normalizer->denormalize($valueToDenormalize, 'Your\Class');
)
谁知道我该怎么做
谢谢 也许您可以先对其进行解码,然后使用规范化器创建实体。大概是这样的:
Array
(
[sizes] => Array
(
[0] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] => 1
[text:AppBundle\Entity\Filter:private] => Heren
)
[1] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] => 2
[text:AppBundle\Entity\Filter:private] => Dames
)
)
[colour] => Array
(
[0] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] =>56
[text:AppBundle\Entity\Filter:private] => Black
)
[1] => AppBundle\Entity\Filter Object
(
[id:AppBundle\Entity\Filter:private] => 212
[text:AppBundle\Entity\Filter:private] => Yellow
)
)
$array= json_decode($json, true);
$valueToDenormalize = $array['value'];
$normalizer = new GetSetMethodNormalizer();
$entity = $normalizer->denormalize($valueToDenormalize, 'Your\Class');
请注意,我没有尝试过这个。我不知道规范化器是否会这样工作,但我知道它用于在数组和Symfony的实体之间进行规范化和反规范化
为了进一步调查,您可以查看序列化程序文档:
或规范化器:
以下是关于json_编码的一些内容:
您是否尝试过
反序列化()方法
JMS'方法?