Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析json数据时的java.lang.NullPointerException_Java_Json - Fatal编程技术网

解析json数据时的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

我最近在学习java,当我想解析一个气象网站的数据时,我遇到了这个错误,但我仍然无法理解,有人能告诉我为什么会出现这个错误:java.lang.NullPointerException

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非常了解,因此我可以自信地说问题出在变量中。