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;
    }
  • Вопрос задан
  • 375 просмотров
Решения вопроса 1
Можно попробовать использовать виртуальные методы (VirtualProperty):

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

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

Войти через центр авторизации
Похожие вопросы
KR digital Москва
от 100 000 руб.
YLab Тольятти
от 80 000 до 120 000 руб.
Oblako Studio Санкт-Петербург
от 120 000 до 240 000 руб.
21 янв. 2020, в 10:15
300 руб./в час
21 янв. 2020, в 09:17
5000 руб./за проект
21 янв. 2020, в 09:01
25000 руб./за проект