Вы пробовали Play's chunked responses?
В контроллере вы имели бы действие что-то на этой линии:
public Result chunkedJson() {
return ok(readJsonChunks());
}
И в методе readJsonChunks
вы на самом деле создать Куски:
public static Chunks<String> readJsonChunks() {
Chunks<String> chunks = new StringChunks() {
@Override
public void onReady(play.mvc.Results.Chunks.Out<String> out) {
JsonFactory jfactory = new JsonFactory();
try {
// Read from file
JsonParser jParser = jfactory.createJsonParser(new File("c:\\user.json"));
// Loop until token equal to "}"
while (jParser.nextToken() != JsonToken.END_OBJECT) {
// Write all your JSON stuff into out, e.g. with
String text = jParser.getText();
out.write(text);
}
jParser.close();
} catch (IOException e) {
out.write("Couldn't open file c:\\user.json");
} finally {
out.close();
}
}
};
return chunks;
}
Я никогда не пробовал этот конкретный код (особенно я никогда не использовал JsonFactory.createJsonParser - кажется, он устарел), но я использую нечто похожее на отправку файлов журналов с сервера на клиент.
(я работаю с Play 2.2.3)
ли это файл с JSON строки, которую вы хотите, чтобы поток, или это просто JSON? Используете ли вы POJO для представления данных json? –
это просто json, но если я не ошибаюсь, вы должны рассматривать json как файл для его потока ... и да, я использую pojos – user2469133
. Какую версию «PlayFramework» вы используете? –