grabbee
@grabbee

Как сократить вложенность json от JMS serializer?

Не могу разобраться что делать со связями. OneToOne - в первой ентити(user) есть поле tags, которое соединяется с другой таблицей(tag_string) в которой кэширован список тэгов в виде строки через запятую. На выходе хотелось получить данные user с полем строки тэгов из второй таблицы.

Но как я понял, появляется вложенность типа
{
    name: 'Ivan',
    age: 20,
    tags: {
        str: "tag1, tag2, tag3 ..."
    }
}


Как избавиться от вложенности и получить сразу tags: "tag1, tag2, tag3 ..."
Сущность получается и отдается автоматически FindBy через @ParamConverter сериализацию описываю в YAML
FOSRestBundle, контроллер

/**
     * @View()
     * @return array
     */
    public function getAction(User $user)
    {
        return $user;
    }
  • Вопрос задан
  • 530 просмотров
Решения вопроса 1
Можно попробовать использовать виртуальные методы (VirtualProperty):

class User {
...
    /**
     * @Serializer\VirtualProperty()
     * @Serializer\SerializedName("tags")
     */
    public function getTags()
    {
        return explode(',', $this->tags->getStr());
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы