Ich bin neu in der Verwendung von Jackson & Deserialisierung von JSON. I "m versuchen, einen Nachrichtenprozessor zu schaffen und haben so etwas wie die folgende:Verwenden Jackson JSON Deserialize mit w/geschachtelte Klasse?
@JsonDeserialize(builder = TestMessage.TestMessageBuilder.class)
private static class TestMessage {
@Nonnull
private Long timestamp;
@Nonnull
private String regionId;
@Nonnull
private String userId;
@Nonnull
private String action;
@Nonnull
private TestMessageMetadata metadata;
@JsonPOJOBuilder(withPrefix = "")
public static class TestMessageBuilder {}
}
Das Problem ist, dass je nachdem, welche Art von Aktionstyp die Nachricht kommt mit der TestMessageMetadata muß eine von sein eine Reihe von verschiedenen Unterklassen Wenn die Aktion beispielsweise "stream" ist, muss TestMessageMetadata vom Typ TestMessageStreamMetadata sein Jede Unterklasse von TestMessageMetadata hat unterschiedliche Attribute (TestMessageStreamMetadata kann 4 Felder haben, die nur für den "stream" -Typ gelten) Nachrichten, während für einige andere Aktionen möglicherweise nur 1 Feld vorhanden ist, das nur für diese Art von Aktion usw. gilt.)
Der Prozessor muss nur diese eine übergeordnete Nachrichtenklasse haben. Welche Möglichkeiten gibt es also, um die verschiedenen Aktionstypen zu behandeln? Hilfe würde sehr geschätzt werden!