[英]Jackson JSON to stream parser
我想將來自 HttpRequest(JSON 對象)的響應作為流處理。 這意味着僅過濾我感興趣的data
字段並將其作為流返回並進一步處理(作為 HttpServletResponse 發送)。 我不想將它加載到內存中,因為response.body()
可能很大(1 000 000+ 行)。 不幸的是,我在 JsonParser 類上沒有看到任何會返回流的方法。
HttpResponse<InputStream> response = client.send(httpRequest, BodyHandlers.ofInputStream());
InputStream result = response.body();
JsonFactory factory = new JsonFactory();
try(JsonParser parser = factory.createParser(result)){
while (parser.nextToken() != JsonToken.END_OBJECT) {
if ("data".equals(parser.getCurrentName())) {
parser.getValueAsString(); // it returns correct lines but as String
}
}
}
有人知道如何處理嗎? 或者我應該使用其他一些庫/API?
您已經將輸入數據作為流進行處理,因此可以輕松地將其寫入另一個流,例如HttpServletResponse
。
獲取要將數據傳輸到的輸出流:
ServletOutputStream out = httpServletResponse.getOutputStream();
對於每個數據字符串,將值寫入新流:
while ... {
if ("data".equals(parser.getCurrentName())) {
String data = parser.getValueAsString();
out.write(data.getBytes("UTF-8"));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.