0

以下に示すように、バッファリングされたリーダーを使用して JSON 応答を読み取ろうとしています。Apache Commons Http クライアントを使用しています。応答は 1 行の JSON として返され、文字数は約 1060000 で、サイズは約 1 MB です。直面している問題は、ストリームの一部のみがリーダーによって読み取られ、他の部分が欠落していることです。データを失うことなく完全な JSON を読み取るにはどうすればよいですか? これは BufferedReader の「CharBufferSize」またはストリーム内の文字数に関連していますか?

InputStream stream = method.getResponseBodyAsStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
StringBuilder builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
    builder.append(line);
}
4

3 に答える 3

0

完全なストリームを にコピーするだけの場合は、および-array バッファStringBuilderを使用する必要があります。InputStreamReaderchar

InputStream stream = method.getResponseBodyAsStream();

InputStreamReader reader = new InputStreamReader(stream, "UTF-8");
StringBuilder builder = new StringBuilder();

char[] buffer = new char[4096];
int read;
while ((read = reader.read(buffer)) != -1) {
    builder.append(buffer, 0, read);
}
于 2013-10-10T16:02:04.273 に答える
0

json パーサーを使用してみてください。

    import org.codehaus.jackson.*;

    JsonFactory fac = new JsonFactory();
    JsonParser parser =  fac .createJsonParser(stream);
于 2013-10-10T09:56:25.503 に答える