[英]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.