Я json'ed массив host, port, uri
кортежей, кодируемых 3 участника как массив фиксированной длиной массивов:джексон десериализация массива в объект Java
[
["www1.example.com", "443", "/api/v1"],
["proxy.example.com", "8089", "/api/v4"]
]
Я хотел бы использовать Джексон магию, чтобы получить список экземпляры
class Endpoint {
String host;
int port;
String uri;
}
Пожалуйста, помогите мне поставить правильные аннотации, чтобы ObjectMapper мог совершать магию.
Я не контролирует на подводящем формате и весь мой google'n заканчивается в ответах о том, как отобразить массив объектов собственно JSon (не массивы) в список объектов (например https://stackoverflow.com/a/6349488/707608)
=== рабочего раствора в соответствии с рекомендациями https://stackoverflow.com/users/59501/staxman в https://stackoverflow.com/a/38111311/707608
public static void main(String[] args) throws IOException {
String input = "" +
"[\n" +
" [\"www1.example.com\", \"443\", \"/api/v1\"],\n" +
" [\"proxy.example.com\", \"8089\", \"/api/v4\"]\n" +
"]";
ObjectMapper om = new ObjectMapper();
List<Endpoint> endpoints = om.readValue(input,
new TypeReference<List<Endpoint>>() {});
System.out.println("endpoints = " + endpoints);
}
@JsonFormat(shape = JsonFormat.Shape.ARRAY)
static class Endpoint {
@JsonProperty() String host;
@JsonProperty() int port;
@JsonProperty() String uri;
@Override
public String toString() {
return "Endpoint{host='" + host + '\'' + ", port='" + port + '\'' + ", uri='" + uri + '\'' + '}';
}
}
Большое спасибо, я получил волшебный рабочий код! –