Jest sobie klasa Rodzina

class Rodzina {
private Osoba ojciec;
private Osoba matka;
private Osoba dziecko;

Klasa Osoba ma pola: imie, nazwisko, address

I teraz musze skonfigurowac #objectmapper tak, aby serializowal mi pole imie - ale tylko dla ojca i np. nazwisko tylko dla dziecka itd.

Do tej pory miałem BeanSerializerModifier który mówił mi jakie pola serializuje, ale właśnie tu jest problem, bo mogę tylko powiedzieć, ze chce pole imie z klasy
@plastik: Ale to zapewnia serializacje do "plaskiego" json - tego nie chce.
@lemon_tea: no to chciałbym robić jako ostateczność (to nie jest tylko jedna klasa u mnie)

Moj use case jet taki, ze user na UI wybiera export danych i chce wyeksportowac: nazwisko ojca, imie matki, imie dziecka. A wszystko to jest takim samym obiektem.

Podejscie ktora opisalem wyżej ("hack") troche psuje mi model JPA., ale znalazlem na stacku cos
  • Odpowiedz
#programowanie #php #serializacja #json #symfony #symfony4 #doctrine #orm

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

[
{
"id": 1,
"name" : "Blabla",
"ClassB" : [{
"id": 9,
"name": "Urabura",
"status": 0
} { ...
@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 która
  • Odpowiedz
Czy w przypadku serializacji obiektów klasy mogą różnić się metodami?

Chodzi mi o to, że w jednym miejscu klasa jest w stanie zapisać stany do pól, obiekt jest wysyłany i przy odbiorze klasa już tylko wie jak operować na polach, ale nie jak tworzyć te dane/zapisywać.


@Wyrewolwerowanyrewolwer:

To zależy.

Do zserializowanej postaci obiektu dołączana jest liczba oznaczająca wersję klasy. Ta liczba jest brana z dwóch źródeł:
- zawartość statycznego pola
  • Odpowiedz