Как десериализовать json с неизвестными свойствами, используя JMS Serializer? - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь создать DTO, который поможет мне десериализовать вложенный JSON.Я знаю структуру JSON, но на каком-то вложенном шаге я не знаю имен / индексов свойств JSON.

JSON выглядит так:

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

, но я не знаю именсвойств внутри layer property.

У меня пока есть несколько DTO

Project DTO:

namespace App\DTO;

use JMS\Serializer\Annotation as Serializer;

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

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 голосов
/ 01 июня 2019

Попробуй это. Вам не нужен класс для слоя.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...