如何从Java HTTPResponse解析JSON?
我有一个用于刚刚发出的Web请求的HttpResponse对象。响应为JSON格式,因此我需要对其进行解析。我可以以一种非常复杂的方式来完成它,但是似乎必须有一个更好的方法。
这真的是我能做的最好的吗?
HttpResponse response; // some response object Reader in = new BufferedReader(
new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuilder builder= new StringBuilder();
char[] buf = new char[1000];
int l = 0;
while (l >= 0) {
builder.append(buf, 0, l);
l = in.read(buf);
}
JSONTokener tokener = new JSONTokener( builder.toString() );
JSONArray finalResult = new JSONArray( tokener );
如果可以,那么我在Android上。
回答:
可以更有效地完成两件事:
- 使用
StringBuilder
代替,StringBuffer
因为它是更快和更小的兄弟。 - 用于
BufferedReader#readLine()
逐行读取,而不是逐字符读取。
HttpResponse response; // some response objectBufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;) {
builder.append(line).append("\n");
}
JSONTokener tokener = new JSONTokener(builder.toString());
JSONArray finalResult = new JSONArray(tokener);
如果JSON实际上是一行,那么您还可以删除循环和构建器。
HttpResponse response; // some response objectBufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
String json = reader.readLine();
JSONTokener tokener = new JSONTokener(json);
JSONArray finalResult = new JSONArray(tokener);
以上是 如何从Java HTTPResponse解析JSON? 的全部内容, 来源链接: utcz.com/qa/418423.html