Tengo un objeto HttpResponse para una solicitud web que acabo de hacer. La respuesta está en formato JSON, así que necesito analizarlo. Puedo hacerlo de una manera absurdamente compleja, pero parece que debe haber una mejor manera.¿Cómo analizo JSON desde una respuesta HTTP Java?
¿Es esto realmente lo mejor que puedo hacer?
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);
Estoy en Android si eso hace la diferencia.
¿El código de la pregunta no lo leerá 1000 bytes a la vez? Obviamente, depende del tamaño de línea promedio de la salida, pero podría ser menos lotes que uno por línea. –
No, como el nombre del método ya lo insinúa, el 'BufferedReader # readLine()' lee el flujo línea por línea. Es decir. divide la secuencia en nuevas líneas. Pruébalo y experimenta tú mismo. – BalusC
Derecha. Ese es mi punto. Si una línea tiene menos de 1000 caracteres en promedio usando BufferedReader # readLine() implicará más veces a través del bucle que BufferedReader # read(). (No es probable que la diferencia sea importante a menos que la salida tenga muchas líneas cortas.) –