2016-09-13 3 views
-1

Google API를 사용하는 애플리케이션을 만들 때 Google 도서에 대한 세부 정보를 가져 왔습니다.JSON 코드에서 코드 찾기

다음 JSON 링크에서 작성자 및 도서 제목에 대한 데이터를 검색하고 싶습니다. 이 문제에

https://www.googleapis.com/books/v1/volumes?q=android

내 접근 방법 : 경로를 향한

private Book extractFeatureFromJson(String bookJSON) { 
    try { 
     JSONObject baseJsonResponse = new JSONObject(bookJSON); 
     JSONArray items = baseJsonResponse.getJSONArray("items"); 

     // If there are results in the features array 
     for(int i=0;i<10;i++) 
     { 
      JSONObject firstFeature = items.getJSONObject(i); 
      JSONObject volumeinfo=firstFeature.getJSONObject("volumeinfo"); 
      String title=volumeinfo.getString("title"); 
      JSONArray author= volumeinfo.getJSONArray("authors"); 

      for(int j=0;j<author.length();j++) 
      { 
       JSONObject authorFeature=author.getJSONObject(j); 
      } 

      // Create a new {@link Event} object 
      return new Book(title,author); 

     } 
    } catch (JSONException e) { 
     Log.e(LOG_TAG, "Problem parsing the earthquake JSON results", e); 
    } 
    return null; 
} 

내 접근 방식은 잘못과 실수이고 나는 그것을 알아낼 수 없습니다.

+0

JSON 응답을 넣을 수 있습니까? –

+0

https://www.googleapis.com/books/v1/volumes?q=android –

+0

'author.getJSONObject (j);''authors '의 내용이 객체라고 생각하게 만드는 이유는 무엇입니까? – njzk2

답변

0

첫 번째 사이클 반복 (1-10)에서 책을 다시 실행하면 책 목록을 만들고 목록을 반환해야합니다.

0

클래스 Book이 매개 변수로 String title, JSONArray authors을 수신하고 있습니다. 맞습니까?

그리고 난 당신이 List<Book> books 모음을 만들고 응답이 확실히 JSONs 작업은 당신이 수동으로 처리 할 수 ​​있도록 충분한 힌트를 제공해야 중요하고이 위의 답을 얼마나 이해

0

이 포함이 각 책에 추가하는 것이 좋습니다. 내 제안 비록 당신이 그것을 수동으로 구문 분석하지 않고 자동 도구가 당신을 위해 이것을 처리하도록합니다.

Gson과 함께 작업 클래스에 자동으로 구문 분석 할 수 있습니다. Gson에게 구문 분석 방법을 알려주는 방법은 무엇입니까? 이것을 처리 할 수있는 JsonSchema2Pojo라는 훌륭한 도구가 있습니다. Gradle Plugin here : https://github.com/joelittlejohn/jsonschema2pojo/tree/master/jsonschema2pojo-gradle-plugin 빌드 타임 중에 Gson이 이해할 수있는 클래스를 생성 할 수 있습니다. 저장소에 제공된 구성을 사용하고 필요에 맞게 조정하는 것이 좋습니다.

플러그인은 json 스키마를 해석하여 클래스를 생성하므로 플러그인 구성에서 스키마로 디렉토리를 지정해야합니다. 처음에는 다른 복잡한 것처럼 보일 수도 있지만 위의 예제처럼 http://jsonschema.net/ 웹 페이지를 사용하여 예제 답변을 사용하여 스키마를 생성 할 수 있습니다.

그래서 요약 해주세요. Gson과 jsonschema2pojo를 사용하면이 작업을 거의 생각할 필요가없고 더 중요한 작업에 집중할 수 있습니다 (사용자 정의 파서를 작성해야하는 경우는 제외). 구성에 다소 시간이 걸릴 수 있지만 맞춤 구문 분석기를 작성하는 것보다 빠르기 때문에 스키마 만 변경하면 쉽게 변경할 수 있습니다. 특히 외부 API를 사용하지 않아도 편리합니다.