2016-07-16 2 views
0

자바를 사용하여 프로젝트를하고 있습니다. 그 프로젝트에서 IMDB로부터 영화 데이터를 얻어야합니다. 지금까지 영화 ID를 사용하여 직접 링크를 사용하여 데이터를 JSON 파일로 가져올 수 있다는 것을 알게되었습니다.자바에서 JSON 배열로 IMDB 데이터 받기

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

이 데이터를 java의 JSON 배열로 가져 오려고합니다. 누군가 날 도와 줄 수 있어요. 고맙습니다.

+1

JSONObject를 JSONArray로 변환하는 방법은 무엇입니까? (http://stackoverflow.com/questions/22687771/how-to-convert-jsonobjects-to-jsonarray) –

+0

데이터 캡처 방법을 알고 싶습니다. 이 링크에 의해 JASONarray 자바 – 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; 
} 

이 JsonArray like that로 된 JSONObject & 변환을 구축 :

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 요청 만들기 Java 애플리케이션에서 URL 엔드 포인트로
  • 직렬화 된 JSON의 응답 데이터를 애플리케이션에서 사용할 수있는 데이터 구조로 변환.

한 가지 방법은 이러한 작업을 개별적으로 해결하는 것입니다. 좋은 HTTP 클라이언트 라이브러리가 부족하지 않습니다 (Apache HttpComponents 및 Jetty HttpClient가 염두에 둡니다). 또한 Java에서 JSON을 조작하기위한 훌륭한 라이브러리 부족도 없습니다. (Jackson, Google의 GSON 등).

그러나 Java에서 웹 서비스와 상호 작용하는 "표준"방법은 JAX-RS 표준을 사용하는 것이며이 중 Jersey는 참조 구현입니다. Jersey 클라이언트 모듈을 사용하면 HTTP 호출을 수행하고 JSON을 "Bean 호환"Java 클래스로 deserialize하여 단일 작업으로 처리 할 수 ​​있습니다. JSON 마샬링에 대한 자세한 내용은 여기

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

과 : 저지 여기에 설명서를 참조하십시오

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

당신이 하나의 API를 호출 할 필요 단지를 찾고 있다면, 말했다 모든 아파치 HTTPComponents와 Google GSON이 아마도 내가 취할 수있는 경로 일 것입니다.

행운을 빈다.