解析json数据时的java.lang.NullPointerException
我最近在学习java,当我想解析一个气象网站的数据时,我遇到了这个错误,但我仍然无法理解,有人能告诉我为什么会出现这个错误:java.lang.NullPointerException解析json数据时的java.lang.NullPointerException,java,json,Java,Json,我最近在学习java,当我想解析一个气象网站的数据时,我遇到了这个错误,但我仍然无法理解,有人能告诉我为什么会出现这个错误:java.lang.NullPointerException public class main { public static void main(String []args) { try { URL url = new URL("http://api.worldweatheronline.com/premium/v1/pa
public class main {
public static void main(String []args) {
try {
URL url = new URL("http://api.worldweatheronline.com/premium/v1/past-weather.ashx?key=caa2f68a7b2b43a09c115021171404&format=json&q=atlanta&date=2015-07-20&tp=24");
InputStream is = url.openStream();
JsonReader rdr = Json.createReader(is);
JsonObject obj = rdr.readObject();
JsonArray data = obj.getJsonArray("weather");
JsonObject objectOfData = data.getJsonObject(0);
System.out.println(objectOfData.getString("date"));
} catch (Exception ex){
System.out.println(ex);
}
}
}
以下是从邮递员处解析的数据:
以下是跟踪日志:
这是第19行的图片
第1部分:回调错误 我在我的浏览器中检查了您的URL,似乎您已将回调参数设置为使用请求回调包装json,如下所示: 请求({“数据”:..}) 解析器无法识别为正确json的第一个字符 请改为尝试此URL: 第2部分:空指针异常 json正在被无序解析。在访问数组之前,需要从根元素“data”创建一个对象
try {
URL url = new URL("http://api.worldweatheronline.com/premium/v1/past-weather.ashx?key=caa2f68a7b2b43a09c115021171404&format=json&q=atlanta&date=2015-07-20&tp=24");
InputStream is = url.openStream();
JsonReader rdr = Json.createReader(is);
JsonObject obj = rdr.readObject();
JsonObject objectOfData = (JsonObject) obj.get("data");
JsonArray data = objectOfData.getJsonArray("weather");
JsonObject a = data.getJsonObject(0);
System.out.println(a.getString("date"));
} catch (Exception ex){
System.out.println(ex);
}
您可以在catch方法中打印堆栈跟踪,找出哪一行有错误,并采取相应的行动。请参阅我的标题,我将在文章中添加它,谢谢。是的,这可能是相同的问题,但在我的情况下,您能告诉我如何解决吗?谢谢你能发布错误日志吗?这有助于我们找到获取
java.lang.NullPointerException
的位置。当它在计算机中运行时,您是否有错误?weather
数组嵌套在数据中。你需要先把它提取出来。此外,您还需要学习如何调试自己的代码。这个网站并不是要取代它。你说得对,但是错误改为java.lang.NullPointerException谢谢,我已经更新了。跟踪日志说错误在第19行,但是在你发布的代码中,只有不到19行。你可以编辑你的帖子(发布完整的代码)或者告诉那一行有错误。我已经更新了它,我发现一件奇怪的事情,当我在第19行写代码时,当我添加点“.”“data”之后,我发现我只能在第19行获取带有Int而不是StringAt的jsonobject,变量“data”中可能只有错误。因此,问题在于要么变量没有正确初始化,要么变量的值为null。(很抱歉,我对json知之甚少,但我对java非常了解,因此我可以自信地说问题出在变量中。