Jackson Deserialisierung des Typs mit verschiedenen Objekten

Ich habe ein Ergebnis von einem Webdienst, der entweder einen Booleschen Wert oder eine Singleton-Map zurückgibt, z.

Boolesches Ergebnis:

{
    id: 24428,
    rated: false
}

Kartenergebnis:

{
    id: 78,
    rated: {
        value: 10
    }
}

Beides kann ich individuell leicht abbilden, aber wie mache ich das generisch?

Grundsätzlich möchte ich es einer Klasse zuordnen wie:

public class Rating {
    private int id;
    private int rated;
    ...
    public void setRated(?) {
        // if value == false, set rated = -1;
        // else decode "value" as rated
    }
}

Alle polymorphen Beispiele verwenden@JsonTypeInfo basierend auf einer Eigenschaft in den Daten abzubilden, aber ich habe diese Option in diesem Fall nicht.

BEARBEITEN
Der aktualisierte Codeabschnitt:

@JsonProperty("rated")
public void setRating(JsonNode ratedNode) {
    JsonNode valueNode = ratedNode.get("value");
    // if the node doesn't exist then it's the boolean value
    if (valueNode == null) {
        // Use a default value
        this.rating = -1;
    } else {
        // Convert the value to an integer
        this.rating = valueNode.asInt();
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage