雨雪的OpenWeatherMap JSON API预测

时间:2018-02-22 12:45:02

标签: json api gson openweathermap

当参数rain and snow没有值时,我遇到问题迫使我的代码顺利运行。实际上,只要有这些参数的值,它就会循环,如果没有,它就会结束。

我已经包含了gson库来帮助我将值作为JSON对象/ strings / double等获取。

   for (int l=0; l<40; l++) {
        Forecast fcath = new Forecast();
        fcath.setMain_temp(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("main").getAsJsonObject().get("temp").getAsDouble());
        fcath.setWeather_description(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("weather").getAsJsonArray().get(0).getAsJsonObject().get("description").getAsString());
        fcath.setClouds_all(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("clouds").getAsJsonObject().get("all").getAsInt());
        fcath.setWind_speed(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("wind").getAsJsonObject().get("speed").getAsDouble());
        fcath.setDt_txt(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("dt_txt").getAsString());
        fcath.setRain(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("rain").getAsJsonObject().get("3h").getAsDouble());
        fcath.setSnow(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("snow").getAsJsonObject().get("3h").getAsDouble());
        f.add(fcath);
        System.out.println("Date: " + f.get(l).getDt_txt() + " Temp: " + f.get(l).getMain_temp() + " Celsius " + " Chance of Rain: " + f.get(l).getRain() + " Chance of Snow: " + f.get(l).getSnow());
    }

如果没有fcath.setRain和fcath.setSnow代码行,则输出如下: Working output photo

假设预测中没有降雨机会 例如 fcath.setRain(。obj_fcath.get( “名单”)getAsJsonArray()得到(L).getAsJsonObject()获得( “雨”)getAsJsonObject()获得( “3H”)getAsDouble()。); == {} 它给了我NullPointerException

NullPointerException photo

1 个答案:

答案 0 :(得分:0)

用提供的信息仍然很难说,但似乎如果没有下雨的机会,那么可能

null

get("3h").getAsDouble()。然后你不能从null对象做{{1}}。