我有一個HttpResponse對象,用於我剛剛提出的Web請求。響應是JSON格式,所以我需要解析它。我可以用一種荒謬複雜的方式做到這一點,但似乎必須有更好的辦法。如何從Java 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上,如果這有什麼區別。
問題中的代碼不會一次讀取1000字節的流嗎?顯然它取決於產量的平均線大小,但很可能少於每行一個批次。 – 2010-05-16 21:51:39
不,由於方法名稱已經提示,BufferedReader#readLine()會逐行讀取流。即它在新行上拆分流。嘗試一下,親身體驗一下。 – BalusC 2010-05-16 21:58:05
沒錯。這是我的觀點。如果一行使用BufferedReader#平均少於1000個字符,readLine()將涉及比BufferedReader#read()更多的遍歷循環。 (不是說差別可能很重要,除非輸出有很多短線。) – 2010-05-16 22:02:49