当参数雨雪没有值时,我面临着迫使代码顺利运行的问题。实际上,只要有这些参数的值,如果没有,它就会循环。
我已经包含了gson库来帮助我获得JSON对象/字符串/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代码行,输出如下:工作输出照片
假设天气预报没有下雨的机会,例如: fcath.setRain(obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("rain").getAsJsonObject().get("3h").getAsDouble());== {},它给了我NullPointerException
发布于 2018-02-22 13:52:27
用所提供的信息仍然很难说,但似乎如果没有下雨的机会,那么可能。
obj_fcath.get("list").getAsJsonArray().get(l).getAsJsonObject().get("rain").getAsJsonObject() 是null。则不能从空对象执行get("3h").getAsDouble()。
https://stackoverflow.com/questions/48927778
复制相似问题