2017-09-16 31 views
0

Ich bin mit dem Flickr-API meine App bekommen Bilder angezeigt werden, je nach Benutzersuche. Ich erhalte diese Fehlermeldung: JSONException: No value for photoJSONException: Kein Wert für Foto

Der Aufruf das Foto zu bekommen:

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"); 
     } 
    } 
} 

JSON-Format ist dies:

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

JSON-Format diese Fotos ist: { Seite: 1, Seiten: 2165, perpage: 100, gesamt: „216413 ", Foto: [ { ID:" 37095719122 ", – grace

+0

Da' neue JSONObject() 'akzeptiert die Zeichenfolge, ich rate es ein gültiges JSON-Objekt und in diesem Fall sollte die Zeichenfolge mit' {'und nicht beginnen mit 'Fotos'. – ZeekHuge

Antwort

0

Da der new JSONObject() Teil des Codes funktioniert gut, seine sichere davon ausgehen, dass das JSON-Objekt, Sie werden immer gültig ist, und in diesem Fall muss Ihr actuall JSON-Objekt wie folgt aussehen:

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

Die Variable flickerJSON würde dieses ganze Objekt enthält und das einzige Feld, hat es photos, während das photo Feld, das Sie zugreifen möchten, ein inneres Feld von photos Objekt ist. Daher

, können Sie das photo Feld wie folgt zugreifen:

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

Danke, das hat funktioniert. Allerdings zeigt meine App jetzt das imageUrl anstelle des eigentlichen Bildes an. Alle Ideen, wie ich dieses Problem lösen kann, ich bin neu leider Android – grace

+0

Sie müssen das Bild herunterzuladen, die URL. Auch, weil das ein ganz anderes Thema wäre, könnten Sie diese Antwort als Sicherheiten akzeptiert, markieren. – ZeekHuge