Java BufferedReader 值变为空

Java BufferedReader value become null

我正在使用以下代码从 API 获得响应。

BufferedReader bf = new BufferedReader(new InputStreamReader(
                connection.getInputStream()));
        System.out.println("bf.readLine() - " + bf.readLine());

        output = bf.readLine();
        while (output != null) {
            JSONObject obj = new JSONObject(output);
            System.out.println("output is " + output);
            resCode = obj.getString("resCode");
            resDesc = obj.getString("COUNT");
        }

我可以 return bf.readLine() 响应如下。

{"status":true,"data":[{"COUNT":"0"}]}

问题是当我将 bf.readLine() 分配给 String 并检查值时,它变为空。为什么 bf.readLine() 显示为 null(给出空点异常),即使它 return 来自 API.

的值

原因是您调用了两次 readLine。您先在 System.out.println("bf.readLine() - " + bf.readLine()); 打电话,然后在 output = bf.readLine();

再次打电话

修改为output = bf.readLine();System.out.println("bf.readLine() - " + output);

根据 oracle 文档readLine()

Returns: 包含行内容的字符串,不包括任何行终止字符,如果已到达流末尾则为 null

如果到达流的末尾,那么您将得到 null,对 null 的操作将给出 nullpointerexception

您的代码应该是

BufferedReader bf = new BufferedReader(new InputStreamReader(
                connection.getInputStream()));

String output = null;

        while ((output = bf.readLine()) != null) {
         System.out.println("bf.readLine() value is--- - " + output );

            JSONObject obj = new JSONObject(output);
            System.out.println("output is " + output);
            resCode = obj.getString("resCode");
            resDesc = obj.getString("COUNT");
        }