Десериализация Джексона типа с различными объектами
У меня есть результат от веб-службы, которая возвращает либо логическое значение, либо одноэлементную карту, например,
Логический результат:
{
id: 24428,
rated: false
}
Результат карты:
{
id: 78,
rated: {
value: 10
}
}
По отдельности я могу легко сопоставить их оба, но как мне сделать это в общем?
В основном я хочу сопоставить его с классом, как:
public class Rating {
private int id;
private int rated;
...
public void setRated(?) {
// if value == false, set rated = -1;
// else decode "value" as rated
}
}
Все полиморфные примеры использования@JsonTypeInfo
для отображения на основе свойства в данных, но я неу этого варианта нет в этом случае.
Обновленный раздел кода:
@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();
}
}