簡體   English   中英

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");
        }

我可以返回bf.readLine()響應,如下所示。

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

問題是當我將bf.readLine()分配給String並檢查該值時,它變為null。 為什么bf.readLine()顯示為null(給出null點異常),即使它從API返回值也是如此。

原因是您兩次調用readLine。 您首先在System.out.println("bf.readLine() - " + bf.readLine());處調用System.out.println("bf.readLine() - " + bf.readLine()); 並再次在output = bf.readLine();

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

根據oracle docs readLine()

返回:包含行內容的String,不包含任何行終止字符;如果已到達流的末尾,則返回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");
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM