Я довольно новичок в Джексоне, поэтому заранее извиняюсь, если есть очевидное решение.
Я пишу клиент Джерси и пытаюсь десериализовать JSON в следующем формате:
{
"success": true,
"someEntity": {
"someField": 123
}
}
Теперь, если бы поле 'success' не существовало, это было бы довольно просто, так как я мог бы просто настроить ObjectMapper для использования DeserializationFeature.UNWRAP_ROOT_VALUE
, и он десериализовал бы содержимое до SomeEntity.
Мой объект ответа выглядит так:
public class Response<T>
{
private boolean success;
private T entity;
public T getEntity()
{
return entity;
}
public boolean isSuccess() {
return success;
}
}
Где entity
будет ...
public class SomeEntity
{
private int someField;
public int getSomeField()
{
return someField;
}
}
При попытке десериализации вышеуказанного JSON в Response<SomeEntity>
без какой-либо конфигурации я получаю: Unrecognized field "someEntity" (class Response)
Мне повезло с добавлением @JsonProperty("someEntity")
в поле entity
, но, очевидно, я бы хотел, чтобы этот класс ответов был универсальным и не должен был создавать его для каждой сущности, передаваемой клиенту.
Я уверен, что есть простое решение, которого я не вижу - заранее спасибо.
Редактировать: я также пытался использовать @JsonTypeInfo
безрезультатно.