У меня проблемы с десериализацией 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();
}