Siema phpmirki, piszę API RESTowe w Symfony 4 i za pomocą Doctrine pobieram sobie z bazy danych listę obiektów klasy ClassA, która wśród swoich pól prywatnych ma jedno pole typu ArrayCollection i teraz chcę zwrócić wszystko jako JSON, aby miało to strukturę mniej więcej
Rozumiem, że nie ma lepszego sposobu niż implementacja JsonSerializable i własnych metod serializacji? Co w przypadku dużych zagnieżdżeń (np. ClassB agreguje ClassC, która z kolei agreguje ClassD)? Co w przypadku, gdy w niektórych akcjach chcę wchodzić głębiej w każdą kolejną agregację, a w innych nie (np. wystarczy mi id i name, bez danych o ClassB)?
@nehemiah: dzięki, spojrzę na to i przetestuję. Na co dzień jestem frontendowcem i zazwyczaj korzystam już z gotowego API, ale lubię zdobywać nową wiedzę :P
Może ja coś źle zaprojektowałem i nie powinno się robić takich zagnieżdżeń wielokrotnych? Bo w niektórych widokach, w których będe używał konkretnych obiektów nie będę potrzebował ich wszystkich składowych więc wydaje mi się bez sensu zwracanie ich z serwera i chciałbym mieć wpływ na to
Siema phpmirki,
piszę API RESTowe w Symfony 4 i za pomocą Doctrine pobieram sobie z bazy danych listę obiektów klasy
ClassA, która wśród swoich pól prywatnych ma jedno pole typuArrayCollectioni teraz chcę zwrócić wszystko jako JSON, aby miało to strukturę mniej więcej[{
"id": 1,
"name" : "Blabla",
"ClassB" : [{
"id": 9,
"name": "Urabura",
"status": 0
} { ... }],
{ ... }
]
(dzięki wykopowy edytor za obcięcie indentów)
Rozumiem, że nie ma lepszego sposobu niż implementacja JsonSerializable i własnych metod serializacji? Co w przypadku dużych zagnieżdżeń (np.
ClassBagregujeClassC, która z kolei agregujeClassD)? Co w przypadku, gdy w niektórych akcjach chcę wchodzić głębiej w każdą kolejną agregację, a w innych nie (np. wystarczy miidiname, bez danych oClassB)?Da się to jakoś "ładnie" rozwiązać?
JsonSerializableto najprostsza metoda. Inna opcja to użycie dedykowanej libki, jak JMSSerializerBundle.Może ja coś źle zaprojektowałem i nie powinno się robić takich zagnieżdżeń wielokrotnych? Bo w niektórych widokach, w których będe używał konkretnych obiektów nie będę potrzebował ich wszystkich składowych więc wydaje mi się bez sensu zwracanie ich z serwera i chciałbym mieć wpływ na to