2016-07-16 2 views
0

Я делаю проект с использованием java. В этом проекте мне нужно получить данные фильма из IMDB. До сих пор я узнал, что, используя прямую ссылку с идентификатором фильма, мы можем получить данные в виде файла JSON.Получите данные IMDB в массив JSON в java

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

Я хочу получить эти данные в массив JSON в java. Может кто-то помочь мне с этим. Спасибо.

+1

Возможный дубликат [Как преобразовать JSONObjects в JSONArray?] (Http://stackoverflow.com/questions/22687771/how-to-convert-jsonobjects-to-jsonarray) –

+0

Я хочу знать, как захватить данные данная ссылкой на JASONarray с использованием java – jayz

ответ

1

Функция загрузки, что загрузить файл & возвращает результат:

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

Строят JSONObject & новообращенного 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

работает как шарм. Спасибо. – jayz

1

Есть принципиально две задачи, которые необходимо решить для:

  • Выполнение запроса HTTP st от вашего приложения Java до конечной точки URL
  • Преобразование данных ответа из сериализованного JSON в структуру данных, которую вы можете использовать в своем приложении.

Один из подходов заключается в решении этих задач отдельно. Нет недостатка в хороших HTTP-клиентских библиотеках (Apache HttpComponents и Jetty HttpClient приходят на ум). А также отсутствие недостатка в хороших библиотеках для управления JSON на Java. (Джексон, Google GSON, другие).

Однако, «стандартный» способ взаимодействия с веб-сервисами в Java - это стандарт JAX-RS, из которых Джерси является эталонной реализацией. Клиентский модуль «Джерси» позволит вам выполнить HTTP-вызов и десериализовать JSON на «Java-совместимый» Java-класс за одну операцию. Обратитесь к документации Джерси здесь:

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

и здесь для получения информации о JSON маршалинге:

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

Все, что сказал, если вам нужно только вызвать один API и просто ищете для быстрый способ добраться туда, не обязательно самое slickest решение, Apache HTTPComponents и Google GSON, вероятно, маршрут я бы взял.

Удачи вам!

Смежные вопросы