我使用google books api获取一些数据作为json响应。 在响应中,有JSONArrays,每个元素都是一本书,它包含有关它的数据。问题是元素在包含数据时应该是对称的。换句话说,每个元素应包含标题,作者,书籍封面网址,评级等。当一本书不包含例如评级时,该值应该存在并且为空,但它对于该元素根本不存在,因此在for循环中它会引发异常
那么我应该怎么做以避免这样的问题,即使它是空的,我也需要这些数据。
另一部分是答案中提供的书籍封面的网址。我想得到那个形象。我尝试了两个最佳答案in this link,而其中没有一个似乎有效。
答案 0 :(得分:0)
尝试使用optJSONObject而不是getJSONObject来获取JSONObject 注意:如果对象没有密钥,则getJSONObject将通过错误,但如果对象没有值,则optJSONObject将返回null
JSONArray array = null;// your array
for (int i = 0; i < array.length(); i++) {
JSONObject jsonObject = array.optJSONObject(i);
if(jsonObject == null) {
continue;
}
// JSONObject ratingObject = jsonObject.getJSONObject("rating"); // Dont use this
JSONObject ratingObject = jsonObject.optJSONObject("rating");
if(ratingObject != null) {
// Do someting here
}
}
对于图片加载,您可以使用Glide lib,它可以帮助您。