Здесь происходит простая ошибка синтаксического анализа JSON. Вы не даете GSON правильный класс. Проще говоря, этот JSON не является Map
. Вместо этого это объект, который содержит:
String kind;
int totalItems;
Object items;
Ниже я предоставил полный код, необходимый для правильного анализа этого JSON (при условии, что вы в состоянии правильно получить строку JSON.
class ClassWhatever {
public static void main(String[] args) {
String url = "https://www.googleapis.com/books/v1/volumes?q=isbn:0735619670";
// Assuming that you do in fact have the JSON string...
String json = "the correct json";
Container fullJsonObject = new Gson().fromJson(json, Container.class);
for (Item i : fullJsonObject.items) {
System.out.println(i.volumeInfo.authors[0]);
}
}
private class Container {
String kind;
int totalItems;
Item[] items;
}
private class Item {
String kind;
String id;
String etag;
///blah
VolumeInfo volumeInfo;
String publisher;
///etc.
}
private class VolumeInfo {
String title;
String[] authors;
}
}
Выход:
Steve McConnell
Steve McConnell
Примечания:
Вам нужно только добавить поля, которые вы хотите. Например, если вам не нужен String kind
, просто не помещайте его в свой класс Container
. Для краткости я оставил много полей, но, конечно, вставьте их, если они вам нужны.
Кроме того, я решил использовать массивы вместо списков. Они полностью взаимозаменяемы, если вы правильно форматируете свой код.