簡體   English   中英

Jackson JSON 到流解析器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM