2013-02-20 60 views
0

我正在編寫一個查詢Google圖書的應用程序,它將解析JSON文件並顯示本書的標題和作者以及ISBN_10標識符。例如,我試圖從下面的link解析JSON文件。到目前爲止,我所取得的成就是書的標題和作者,這很好。我想要做的主要事情之一是獲得ISBN 10號碼,在這種情況下是「1558607129」。到目前爲止,使用我當前的代碼返回以下結果:解析JSON:Googlebooks獲取特定標識符的JSON文件

{"type":"ISBN_10", "identifier":"1558607129"} 
{"type":"ISBN_13", "identifier":"9781558607125"} 

上述結果表明,該函數的「industryIdentifiers」 JSON數組我不想解析之內的一切。我只想要「1558607129」。

下面是解析JSON迄今爲止功能:

public void parseJson(String stringFromInputS) 
{ 
    try 
    { 
     JSONObject jsonObject= new JSONObject(stringFromInputS); 

     JSONArray jArray = jsonObject.getJSONArray("items"); 
     for(int i = 0; i < jArray.length(); i++) 
     { 
      JSONObject jsonVolInfo = jArray.getJSONObject(i).getJSONObject("volumeInfo"); 
      String bTitle = jsonVolInfo.getString("title"); 

      JSONArray bookAuthors = jsonVolInfo.getJSONArray("authors"); 
      for(int j = 0; j < bookAuthors.length(); j++) 
      { 
       String bAuthor = bookAuthors.getString(i); 
      } 

      JSONArray jsonIndustrialIDArray = jsonVolInfo.getJSONArray("industryIdentifiers"); 
      for(int k = 0; k < jsonIndustrialIDArray.length(); k++) 
      { 
       String isbn10 = isbn10 + "\n" + jsonIndustrialIDArray.getString(k); 
      } 
     } 
    } 
} 

所以我想要做的是專門搶ISBN_10標識符和這一點。在這種情況下它是「1558607129」。我想知道如何指定只是解析isbn_10號碼,或者如果有人能指出我這樣做的正確方向。

謝謝。

+0

我是在想,你想解析字符串從JSON返回數組改正;即「1558607129」。 – blackpanther 2013-02-20 22:16:19

+0

我想要做的是解析從Google圖書返回的任何JSON頁面的ISBN_10數字。在這種情況下它是「1558607129」。 – user1832478 2013-02-20 22:31:35

回答

1

也許這樣的事情?

JSONArray jsonIndustrialIDArray = jsonVolInfo.getJSONArray("industryIdentifiers"); 
for(int k = 0; k < jsonIndustrialIDArray.length(); k++) { 
    JSONObject isbn = jsonIndustrialIDArray.getJSONObject(k); 
    if (isbn.getString("type").equals("ISBN_10")) { 
     String isbn10 = isbn.getString("identifier"); 
     break; 
    } 
} 
+0

是的,謝謝你,這是我想要完成的。 – user1832478 2013-02-21 01:01:11

1

正是堅果狀,我將添加一個小例子

private void test() { 
    try { 
     JSONObject jso = new JSONObject("{ \"type\" : \"ISBN_10\" , \"identifiant\" : \"1558607129\" }"); 
     String type = jso.getString("type"); 
     int idNumber = jso.getInt("identifiant"); 
     System.out.println("RESULT=> type: "+type+" and number: "+idNumber); 
       //RESULT=> type: IBSN_10 and number: 1558607129 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

:)