JSONException:没有照片的值

时间:2017-09-16 21:42:29

标签: java android api flickr

我正在使用Flickr API让我的应用程序根据用户搜索显示图像。我一直收到此错误:public boolean passwordCheck(String password1, String password2) { boolean valid = false; do { if(password1.length()>20) { errorLabel.setText("* Password is too long"); System.out.println("Password is too long"); valid = false; break; } else if (password1.length()<4) { errorLabel.setText("* Password is too short"); System.out.println("Password is too short"); valid = false; break; } else if (password1 != password2) { System.out.println(password1 + "==" + password2); errorLabel.setText("* Passwords do not match!"); System.out.println("Password do not match!"); valid = false; break; } else if (password1 == password2){ valid = true; } } while (!valid); System.out.println("outside the loop" + valid); return valid; }

获取照片的电话:

JSONException: No value for photo

json格式是这样的:

public ArrayList<Category> processResults(Response response) {
    ArrayList<Category> categories = new ArrayList<>();

    try {
        String jsonData = response.body().string();
        if (response.isSuccessful()) {
            JSONObject flickrJSON = new JSONObject(jsonData);
            //json data
            JSONArray photoJSON = flickrJSON.getJSONArray("photo");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

由于代码的new JSONObject()部分工作正常,因此可以安全地假设您获得的JSON对象是有效的,在这种情况下,您的实际JSON对象必须如下所示:

{
    photos: { page: 1, 
              pages: 2165, 
              perpage: 100, 
              total: "216413", 
              photo: [ { id: "37095719122",
              .....
    }
}

变量flickerJSON将包含整个对象,其唯一的字段为photos,而您尝试访问的photo字段是photos的内部字段对象。

因此,您可以像这样访问photo字段:

JSONArray photoJSON = flickrJSON.getJSONObject("photos").getJSONArray("photo");