使用JSMSerializerBundle反序列化多维JSON API响应

使用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":

我与Symfony2/JSMSerializerBundle合作

将平面json对象序列化为PHP对象非常有效。但我使用的API给出了多维Json响应:

{
"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'方法?