我需要创建一个位于另一个 JSONArray 内的 JSONArray 对象。这是我必须解析的json
我需要访问照片数组内的照片数组中的标题、id 和 image_url
下面是我试过的代码。
private static List<ImagelistActivity> extractFeatureFromJson(String flickrJSON) {
if (TextUtils.isEmpty(flickrJSON)) {
return null;
}
List<ImagelistActivity> images = new ArrayList<>();
try {
JSONObject baseJsonResponse = new JSONObject(flickrJSON);
JSONObject photos = baseJsonResponse.getJSONObject("photos");
JSONArray photo = photos.getJSONArray("photo");
for (int i = 0; i < photo.length(); i++) {
JSONObject currentImage = photo.getJSONObject(i);
String id = currentImage.getString("id");
String url = currentImage.getString("url_s");
String title = currentImage.getString("title");
ImagelistActivity img = new ImagelistActivity(id, title, url);
images.add(img);
}
} catch (JSONException e) {
.
Log.e("QueryUtils", "Problem parsing the Image JSON results", e);
}
return images;
}
但这不起作用
org.json.JSONException: 没有照片值
您的 JSON 格式如下:
照片 > 照片
因此,首先,您必须获取 JSONObject 照片,然后从那里获取照片数组。例如
...
JSONObject baseJsonResponse = new JSONObject(flickrJSON);
JSONObject photos = baseJsonResponse.getJSONObject("photos");
JSONArray photo = photos.getJSONArray("photo");
...
编辑
对于您的新代码,错误是 JSON 数组中的某些 JSON 对象没有 url_s 的键
{
"id": "30847132948",
"owner": "140768897@N07",
"secret": "2e224eedf8",
"server": "1892",
"farm": 2,
"title": "Missouri Lawmakers Pass Computer Science...",
"ispublic": 1,
"isfriend": 0,
"isfamily": 0
}
因此,如果您可以先检查 JSONObject 是否具有名为 url_s 的键,那就更好了
for (int i = 0; i < photo.length(); i++) {
JSONObject currentImage = photo.getJSONObject(i);
if (currentImage.has("url_s")) {
...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句