私のコードは、初期化されたソケットでinputStreamをインスタンス化します。次に、bufferedReaderがinputStreamを読み取ります。バッファリングされたreadLineのreadLineメソッドはnullではありませんが、私はwhileループで繰り返します。私はここにループしている途中にターミネーターがないことを認識しています。したがって、私はループを終了させる方法を知る方法の提案を求めています。この例のコードは次のとおりです。jsonをソケットから行ごとに解析するには?
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
bytesRead += line.getBytes().length;
if (isJSONAcceptable(stringBuilder.toString())) {
System.out.println("Acceptable");
stringBuilder = new StringBuilder();
break;
}
}
この場合、すべての行を読み、読み込んだ行がJSON形式であることを確認します。私はこれがパフォーマンスを集中的にすることができ、読み方についてのさまざまな提案に開放されていることを認識しています。
最後に、ストリーム転送の終了を示すテキストを送信できます。 ENDやSTREAM_EXITなどのように。ループ内で一致するかどうかをチェックし、ループを終了します。 –
なぜJson全体を読むことができないのですか? –
私は実際にストリーミングjsonパーサーを扱ったことはありませんが、それはあなたの問題とまったく同じように聞こえます。詳しくはJackson Streaming APIをご覧ください:https://github.com/FasterXML/jackson-docs/wiki/JacksonStreamingApi – borowis