2
문자열이 있습니다. 각 문자열은 예를 들어이 같은 JSON 객체를 나타냅니다 자바 스트림 쉼표로 구분됨
// {"foo": "bar", "bar": "foo"}
String s1 = "{\"foo\": \"bar\", \"bar\": \"foo\"}";
는 내가 스트림을 사용하고 있는데 그 이유는 데이터베이스에서 많은 양의 데이터를 얻을. 그리고 http 응답을 위해이 데이터를 출력으로 스트리밍하고 싶습니다.
try (Stream<String> data = service.streamData()) {
os.write("[".getBytes());
eventStream.forEach(s -> {
try {
os.write(s.getBytes());
os.write(",".getBytes());
os.write("\n".getBytes());
} catch (IOException e) {
logger.error(e.getMessage());
}
});
}
os.write("{}]".getBytes());
os.flush();
각 문자열은 json 개체를 나타내므로 이러한 개체의 배열을 반환하고 싶습니다. 이 경우 수동으로 "["
및 "]"
을 추가하고 쉼표를 사용하여 스트림 내의 각 요소를 구분해야합니다. 하지만 결국에는 최신 요소 뒤에 쉼표가 생깁니다. 그리고 이것은 유효한 json이 아닙니다.
은 다음과 같이 것 :
["{"foo": "bar", "bar": "foo"}", "{"foo": "bar1", "bar": "foo1"}",]
모든 아이디어를 어떻게 스트림을 사용하여 최신 쉼표 없애?
절름발이 (그러나 공통) 접근 방식을 확장 할 수있다 모든 메시지 다음에 쉼표를 출력하지만 각 메시지 앞에 출력하려면 (첫 번째 메시지는 부울로 처리 할 수 있음). – Thilo
또 다른 절름발이 (그러나 일반적인) 접근법은 더미 항목을 추가하는 것입니다 (클라이언트 코드를 무시할 수 있다고 가정). – Thilo
Thilo, 답장을 보내 주셔서 감사합니다. 첫 제안서가 마음에 듭니다. 스트림에서 각각을 사용할 때 요소가 처음인지 어떻게 확인할 수 있습니까? – user3127896