NullPointer в JSONArray при попытке получить данные из API в JSON - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь прочитать данные из API в Json, чтобы использовать их из проекта. Но что-то не так с моим кодом, потому что он продолжает выдавать мне NullPointer: JSONArray jsonarr_2 = (JSONArray) jsonobj_1.get("table");

Остальная часть кода: я пытаюсь просмотреть «данные» и «таблицу» и прочитать нужные мне данные из этого после. Что я делаю не так?

Scanner sc = new Scanner(url.openStream());
            while(sc.hasNext())
            {
                inline+=sc.nextLine();
            }
            System.out.println("\nJSON Response in String format"); 
            System.out.println(inline);
            //Close the stream when reading the data has been finished
            sc.close();
        }

        JSONParser parse = new JSONParser();
        JSONObject jobj = (JSONObject)parse.parse(inline);
        JSONObject  jsonarr_1 = (JSONObject ) jobj.get("data");

                //Get data for Results array
        for(int i=0;i<jsonarr_1.size();i++){

             JSONObject jsonobj_1 = (JSONObject)jsonarr_1.get(i);
             JSONArray jsonarr_2 = (JSONArray) jsonobj_1.get("table");
              for(int j=0;j<jsonarr_2.size();j++)
              {

            JSONObject jsonobj_3 = (JSONObject)jsonarr_2.get(i);
            String str_data2 = (String) jsonobj_3.get("Province_State");
            Long str_data3 = (Long) jsonobj_3.get("Active");
            Long str_data4 = (Long) jsonobj_3.get("Confirmed");
            Long str_data5 = (Long) jsonobj_3.get("Deaths");


            System.out.println("\n");

API выглядит так: API

1 Ответ

0 голосов
/ 01 мая 2020

Единственными возможными причинами получения NullPointerException в строке ниже

JSONArray jsonarr_2 = (JSONArray) jsonobj_1.get("table");

может быть либо jobj равен нулю, либо у него нет поля / объекта 'data'.

Даже если jsonobj_1.get ("table") не дает данных типа JSONArray, тогда оно должно выдавать исключение приведения класса или jsonarr_2 должно быть нулевым.

Попробуйте это, чтобы избежать исключения NullPointerException:

if(jsonobj_1!=null && jsonobj_1.has("table")){
  JSONArray jsonarr_2 = (JSONArray) jsonobj_1.get("table");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...