2016-07-16 20 views
0

Ich mache ein Projekt mit Java. In diesem Projekt muss ich die Filmdaten von IMDB bekommen. Bisher habe ich gelernt, dass wir die Daten als JSON-Datei verwenden können, indem wir eine direkte Verknüpfung mit der Film-ID verwenden.Erhalten Sie IMDB Daten zu JSON-Array in Java

http://www.omdbapi.com/?i=tt2975590&plot=full&r=json 

Ich möchte diese Daten zu einem JSON-Array in Java erhalten. kann mir jemand dabei helfen. Vielen Dank.

+1

Mögliche Duplikate von [Wie JSONObjects zu JSONArray konvertieren?] (Http://StackOverflow.com/questions/22687771/How-to-convert-Jsonobjects-to-jsonarray) –

+0

Ich möchte wissen, wie Sie die Daten erfassen gegeben durch diesen Link zu einem JASONarray mit Java – jayz

Antwort

1

Die Download-Funktion, die die Datei herunterladen & das Ergebnis zurück:

private static String download(String urlStr) throws IOException { 
    URL url = new URL(urlStr); 
    String ret = ""; 
    BufferedInputStream bis = new BufferedInputStream(url.openStream()); 
    byte[] buffer = new byte[1024]; 
    int count = 0; 
    while ((count = bis.read(buffer, 0, 1024)) != -1) { 
     ret += new String(buffer, 0, count); 
    } 
    bis.close(); 
    return ret; 
} 

Bauen JsonObject & Konvertit JsonArray like that:

try { 
    String ret = download("http://www.omdbapi.com/?i=tt2975590&plot=full&r=json"); 

    if (ret != null) { 

     JSONObject items = new JSONObject(ret); 
     Iterator x = items.keys(); 
     JSONArray jsonArray = new JSONArray(); 

     while (x.hasNext()) { 
      String key = (String) x.next(); 
      jsonArray.put(items.get(key)); 
      System.out.println(key + " : " + items.get(key)); 
     } 
    } 

} catch (IOException e) { 
    e.printStackTrace(); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 
+0

funktioniert wie ein Charme. Danke. – jayz

1

Es gibt grundsätzlich zwei Aufgaben, die Sie brauchen zu lösen:

  • Erstellen eines HTTP-Requests st von Ihrer Java-App zum URL-Endpunkt
  • Konvertieren der Antwortdaten von serialisierten JSON in eine Datenstruktur, die Sie in Ihrer Anwendung verwenden können.

Ein Ansatz wäre, für diese Aufgaben getrennt zu lösen. Es gibt keinen Mangel an guten HTTP-Client-Bibliotheken (Apache HttpComponents und Jetty HttpClient in den Sinn kommen). Und auch kein Mangel an guten Bibliotheken für die Manipulation von JSON in Java. (Jackson, Googles GSON, andere).

Die "Standard" -Methode zur Interaktion mit Web-Services in Java ist jedoch der JAX-RS-Standard, von dem Jersey die Referenzimplementierung ist. Mit dem Jersey-Clientmodul können Sie den HTTP-Aufruf ausführen und den JSON in einer einzigen Operation in eine "Bean-kompatible" Java-Klasse deserialisieren. Siehe die Jersey-Dokumentation hier:

https://jersey.java.net/documentation/latest/client.html

und hier für Informationen über JSON Serialisieren:

https://jersey.java.net/documentation/latest/media.html#json

Alles, was gesagt, wenn Sie nur eine API aufrufen müssen und suchen nur für die Der schnellste Weg dorthin, nicht unbedingt die beste Lösung, Apache HTTPComponents und Google GSON sind wahrscheinlich die Route, die ich nehmen würde.

Viel Glück!