我有一个用于刚刚发出的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 object BufferedReader 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 object BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); String json = reader.readLine(); JSONTokener tokener = new JSONTokener(json); JSONArray finalResult = new JSONArray(tokener);