解析JSON:获取特定标识符的Googlebooks JSON文件

时间:2013-02-20 22:06:32

标签: android json parsing google-books

我正在编写一个查询Google图书的应用程序,它将解析JSON文件并显示标题和作者以及图书的ISBN_10标识符。例如,我正在尝试解析以下link中的JSON文件。到目前为止我所取得的成就是得到了这本书的标题和作者。我想要做的主要事情之一是获得ISBN 10号码,在这种情况下是“1558607129”。到目前为止,使用我当前的代码,它返回以下结果:

{"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数字,或者是否有人可以指出我正确的方向。

谢谢。

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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();
    }
}

:)