如何使用JMS序列化器反序列化具有未知属性的json?

时间:2019-05-30 13:39:26

标签: php json symfony jms

我正在尝试创建DTO,它将帮助我反序列化嵌套的JSON。我知道JSON的结构,但在某些嵌套步骤中,我不知道JSON属性的名称/索引。

JSON如下:

{
  "project": {
    "layer": {
      "480x960": [],
      "720x360": [],
      "...": [],
      "...": []
    }
  }
}

但是我不知道 layer 属性内的属性名称。

到目前为止,我有一些DTO

项目DTO:

namespace App\DTO;

use JMS\Serializer\Annotation as Serializer;

class Project
{
    /**
     * @var Layer
     *
     * @Serializer\Type("App\DTO\Layer")
     */
    protected $layer;
}

层DTO:(我坚持)

namespace App\DTO;

use Doctrine\Common\Collections\Collection;
use JMS\Serializer\Annotation as Serializer;

class Layer
{
    // ???
}

我试图实现以下目标: $ project-> getLayer()将返回对象 ['480x960','720x360','...'等的集合] 。我不必在 layer 中保留这些未知属性的名称/索引。

1 个答案:

答案 0 :(得分:0)

尝试一下。您不需要Layer的课程。

use JMS\Serializer\Annotation as Serializer;

class Project
{
    /**
     * @Serializer\Type("array<string, array>")
     */
    protected $layer;
}

选中http://www.inanzzz.com/index.php/post/vsb9/mapping-random-json-and-xml-request-properties-with-jmsserializerbundle-in-symfony