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");
}
我正在使用以下代码从 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");
}