1

Webからデータを取得するためのリンクがたくさんあるので、ループを使用して各URLのデータを取得したかったのですが、JSObjectを配列として作成するのに問題がありました。

JSONObject[] jsObjectallnewstype;
JSONArray[] jsonArrayallnewstype = null;

for(int i = 0; i < categories.length(); i++)
     {
        JSONObject c = categories.getJSONObject(i);
        // Storing each json item in variable
        String title = c.getString(TAG_TITLE);
        String url = c.getString(TAG_URL);  
        jsObjectallnewstype[i] = JSONFunction.getnewstype(title, url); //java.lang.NullPointerException                 
        jsonArrayallnewstype[i] = jsobjectallnewstype[i].getJSONArray(TAG_NEWLIST);
 }

jsObjectallnewstype[i]ログにはJSONFunction.getnewstypeがデータを正常に取得したことが示されていますが、この行はnullエラーになります。jsonArrayallnewstype[i]また、2行目でも同じエラーが発生する可能性があるのではないかと心配しています。

では、JSObjectを配列として配置することはできませんか?もしそうなら、代替手段は何ですか?

4

1 に答える 1

2

現在のコードを修正するには、配列を初期化する必要があります。これが、NPEを取得している理由です。

    JSONObject[] jsObjectallnewstype = new JSONObject[categories.length()];
    JSONArray[] jsonArrayallnewstype = new JSONArray[categories.length()];

    for(int i = 0; i < categories.length(); i++)
         {
            JSONObject c = categories.getJSONObject(i);
            // Storing each json item in variable
            String title = c.getString(TAG_TITLE);
            String url = c.getString(TAG_URL);  
            jsObjectallnewstype[i] = JSONFunction.getnewstype(title, url); //java.lang.NullPointerException                 
            jsonArrayallnewstype[i] = jsobjectallnewstype[i].getJSONArray(TAG_NEWLIST);
     }
于 2012-11-12T04:33:20.237 に答える