Есть ли аннотация для json -b, которая работает как @JsonValue - PullRequest
1 голос
/ 27 марта 2020

У меня проблемы с десериализацией JSON, например:

[{
    "foo": "bar",
    "example": "value"
}]

По какой-то причине используемый мной API упаковывает его в безымянный массив с одним элементом. Я получаю доступ к этому API с помощью RestController.

Поскольку я использовал конвертер Джексона по умолчанию, я мог легко готовить классы моделей, подобные этим (методы получения, установки, конструкторы опущены для ясности):

public class Model {

    private String foo;
    private String example;

}

public class Response {

    @JsonValue
    private List<Model> model;

}

Класс репозитория

public class FooRepository {

    private RestTemplate restTemplate;

    public String getFoo() {
        ResponseEntity<Response> response =
            restTemplate
                .exchange("http://localhost:8080/api"
                         HttpMethod.GET,
                         new HttpEntity<>(new HttpHeaders()),
                         Response.class);

        return response.getBody().getModel().get(0).getFoo();
    }

Я не могу найти аннотацию, которая работает как @JsonValue для Jsonb. Есть один? Или, может быть, есть другой способ исправить мою проблему без использования Джексона?

edit: я нашел обходное решение.

    public String getFoo() {
        ResponseEntity<List<Model>> response =
            restTemplate
                .exchange("http://localhost:8080/api"
                         HttpMethod.GET,
                         new HttpEntity<>(new HttpHeaders()),
                         ParameterizedTypeReference<List<Model>>());

        return response.getBody().get(0).getFoo();
    }
...