UNWRAP_ROOT_VALUE дает неожиданное совпадение - PullRequest
1 голос
/ 02 мая 2019

Я довольно новичок в Джексоне, поэтому заранее извиняюсь, если есть очевидное решение.

Я пишу клиент Джерси и пытаюсь десериализовать 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 безрезультатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...