Po prostu trzeba się z tym bawić, i walczyłem z nim przez kilka godzin, próbując metod @Category
i innych, dopóki nie znalazłem tego: Możesz utworzyć właściwość typu Splittable
, która reprezentuje podstawowy rodzaj transportu, który ma niektóre kodowanie dla booleans/Strings/Lists/Maps. W moim przypadku, znam rodzaj obwiedni, który przechodzi przez przewód w czasie projektowania, a na podstawie innej właściwości, inne pole może być dowolną liczbą innych autorów.
Nie musisz nawet znać typu innej fasoli podczas kompilacji, możesz uzyskać wartości za pomocą metod Splittable
, ale jeśli używasz autobeans, dobrze jest zdefiniować zawijane dane.
interface Envelope {
String getStatus();
String getDataType();
Splittable getData();
}
(setery może być pożądane, jeśli wysyłania danych, a także ODBIORCZA - kodujący fasoli w `rozszczepialnego, aby wysłać go w kopercie jest nawet łatwiej niż dekodowanie go)
JSON przesyłane przez drut jest dekodowany (prawdopodobnie za pomocą AutoBeanCodex
) do typu Envelope
, a po zdecydowałeś, jakiego rodzaju musi być pochodzących z metody getData()
, zadzwoń coś takiego dostać zagnieżdżony obiekt z
SpecificNestedBean bean = AutoBeanCodex.decode(factory,
SpecificNestedBean.class,
env.getData()).as();
Envelope
Typ i typy zagnieżdżone (w powyższej factory
) nie muszą nawet być takie same, jak typ AutoBeanFactory
. Może to pozwolić na odszukanie odczytu/zapisu obwiedni z ogólnej instancji transportu i użycie konkretnej fabryki dla każdej właściwości łańcuchowej dataType
w celu odkodowania modelu danych (i modeli zagnieżdżonych).