我刚开始在Android中使用API,所以我使用Google Books API创建一个简单的应用程序,所以我想检索标题,作者和描述。这是提取信息的方法,但它抛出异常并执行catch块。这是查询“https://www.googleapis.com/books/v1/volumes?q=android&maxResults=1”,其中bookJSON变量是查询响应:
private static List<Book> extractFeatureFromJson(String bookJSON) {
if (TextUtils.isEmpty(bookJSON)) {
return null;
}
List<Book> books = new ArrayList<>();
try {
// Create a JSONObject from the JSON response string
JSONObject baseJsonResponse = new JSONObject(bookJSON);
JSONArray itemsArray = baseJsonResponse.getJSONArray("items");
for (int i = 0; i < itemsArray.length(); i++) {
JSONObject currentBook = itemsArray.getJSONObject(i);
JSONArray authorArray = currentBook.getJSONArray("authors");
StringBuilder authorsStringBuild = new StringBuilder();
for(int j=0; j<authorArray.length(); j++){
authorsStringBuild.append(authorArray.getString(j));
authorsStringBuild.append(", ");
}
String authors = authorsStringBuild.toString();
String title = currentBook.getString("title");
String description = currentBook.getString("description");
double rating = currentBook.getDouble("averageRating");
Book book = new Book( title, authors ,description , rating );
books.add(book);
}
} catch (JSONException e) {
Log.e(LOG_TAG, "Problem parsing the book JSON results", e);
}
return books;
}
答案 0 :(得分:0)
以后请发布输出和错误日志。我没有足够的声誉来评论这一点。 我运行了你的代码,这是一个JSON解析错误。 在代码中替换此行
JSONArray authorArray = currentBook.getJSONArray("authors");
用这个
itemsArray.getJSONObject(i).getJSONObject("volumeInfo").getJSONArray("authors");
你错过了JSONobject&#34; authors&#34;。
您可以使用在线JSON格式化工具更好地可视化层次结构,让您的生活更轻松。这是我喜欢的https://jsonformatter.curiousconcept.com/