Мои REST службы RESPONS со следующими данными:Анализировать анонимный массив из JSON результата с Google HTTP библиотеки Клиент
[
{
"name": "Bart",
"age": 10
},
{
"name": "Homer",
"age": 42
},
{
"name": "Marjorie",
"age": 34
}
]
Результирующий набор представляет собой массив объектов, которые я хочу, чтобы автоматически анализировать с помощью библиотеки HTTP Client Google. Поэтому я создал SimpsonResult
и Simpson
класс:
SimpsonResult.java
public class SimpsonResult {
private List<Simpson> simpsons;
public SimpsonResult() {
}
public List<Simpson> getSimpsons() {
return simpsons;
}
public void setSimpsons(List<Simpson> simpsons) {
this.simpsons = simpsons;
}
}
Simpson.java
public class Simpson {
@Key
private String name;
@Key
private int age;
public Simpson() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Теперь я хочу, чтобы запросить мой бэкенд и автоматически отображать ответ в a SimpsonResult
. Поэтому я написал следующий код:
@Override
public SimpsonResult loadDataFromNetwork() throws IOException {
HttpRequestFactory requestFactory = getHttpRequestFactory();
GenericUrl url = new GenericUrl(baseUrl);
HttpRequest request = requestFactory.buildGetRequest(url);
request.setParser(new JacksonFactory().createJsonObjectParser());
return request.execute().parseAs(SimpsonResult.class);
}
Но когда я выполняю код, то я получаю исключение парсера из com.google.api.client.json.JsonParser
.
Когда я сопоставляю его в строку (request.execute().parseAsString()
), то он работает.
Итак, я считаю, что моя декларация о сопоставлении неверна?
анализ как POJO будет означать корень JSON является объект JSON с помощью ключа под названием Симпсоны со значением, которое является массивом JSON. Ваш корневой JSON является массивом JSON. –
Так что я не могу использовать 'createJsonObjectParser'? –
Я вообще не знаю эту библиотеку. (Я знаю Джексона). Ваш целевой тип Java должен соответствовать JSON. Для массива JSON это должно быть «Collection» или тип массива. –