1 回答
TA贡献1829条经验 获得超7个赞
我能够解决的方法如下:
以字符串形式获取响应
逐行解析 JSON 对象(KafkaQueryResponse是代表 1 行的对象)
ResponseEntity<String> result = template.exchange("/query",
HttpMethod.POST,
new HttpEntity<>(params, headers),
String.class);
List<KafkaQueryResponse> array = new ArrayList<>();
JsonFactory jsonFactory = new JsonFactory();
try(BufferedReader br = new BufferedReader(new StringReader(result.getBody()))) {
Iterator<KafkaQueryResponse> value = objectMapper.readValues(jsonFactory.createParser(br), KafkaQueryResponse.class);
value.forEachRemaining(e -> {
if (e.getRow() != null) {
array.add(e);
}
});
}
array <---- this is the list of JSON objects
KafkaQueryResponse
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class KafkaQueryResponse {
private KafkaQueryRow row;
private String finalMessage;
private String errorMessage;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public static class KafkaQueryRow {
private List<Object> columns;
}
}
此解决方案不允许以块的形式读取流式响应。它等待整个响应到达客户端,然后关闭连接,然后解析所有 json 对象。
添加回答
举报
